在 ListView 数据模板 WPF 中绑定 UserControl

2024-03-06

所以我有这个问题:

  • 我创建了一个用户控件(基本上是一个文本框和标签)。我可以使用依赖属性来绑定此用户控件。
  • 我有一个 ListView,可以在其中在数据模板中放置一个文本框并将“文本”属性绑定到绑定值。

到目前为止,一切都很好。但现在,如果我尝试将 UserControl 放入同一场景中,DependencyProperty 将停止工作。

这是代码:[列表显示]

<ListView x:Name="DtContactDetailListView" ItemsSource="{Binding}">
   <ListBox.ItemTemplate>
      <DataTemplate>
         <UserControl:tbx label="{Binding detail}" text="{Binding value}"/>
      </DataTemplate>
   </ListBox.ItemTemplate>
</ListView>

这种情况下的绑定在列表视图之外、表单的其他部分中起作用......所以这不是我的 DepedencyProperty 的问题。另外,用 UserControl 替换 Textbox,并添加完全相同的 Binding 也可以。但它在这下不起作用......为什么?!

更新 根据要求,我更新了用户控件的代码。请记住,将其绑定到窗口或页面上的其他元素时,这非常有效。只是在列表视图中不起作用。

Public Sub New()
    InitializeComponent()
    Me.DataContext = Me
End Sub

'TextBox property
Public Shared ReadOnly tbxTextProperty As DependencyProperty = DependencyProperty.Register("text", GetType([String]), GetType(tbx), New FrameworkPropertyMetadata(String.Empty))
Public Property text() As [String]
    Get
        Return GetValue(tbxTextProperty).ToString()
    End Get
    Set(value As [String])
        SetValue(tbxTextProperty, value)
    End Set
End Property

就像我在评论问题中提到的那样,在您的 UserControl 中,您已明确设置DataContextuserControl 自身:

Me.DataContext = Me

所以,绑定label="{Binding detail}" 寻找财产detail在 UserControl(本身)的 dataContext 中,而不是在 ListBoxItem 的底层 dataContext 中.

如果您想在 ListBoxItem 的 DataContext 中查找项目,则必须进行显式绑定,例如:

label="{Binding DataContext.detail,
                RelativeSource={RelativeSource Mode=FindAncestor, 
                                            AncestorType=ListBoxItem}}"

OR

您应该删除设置DataContext用户控件中的自身。

您必须将其设置为与声明的 DP 绑定。我建议绑定使用ElementName并删除设置 DataContext。这样您就不必提供显式绑定,并且您的 UserControl 将自动从其 Visual 父级继承 DataContext。

<UserControl x:Name="myUserControl">
   <Label Content="{Binding label, ElementName=myUserControl}"/>
   <TextBlock Text="{Binding text, ElementName=myUserControl}"/>
</UserControl>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 ListView 数据模板 WPF 中绑定 UserControl 的相关文章

  • WPF 无法从 url 检索 WebP 图像?

    我无法从网址检索图像 以前 在设置 HttpClient 标头之前 我根本无法连接到该站点 我可以从其他来源检索图像 但不能从这个特定来源检索图像 检索图像的代码 var img new BitmapImage img BeginInit
  • WPF ComboBox 中具有本地化名称的枚举

    我有一个列出枚举的组合框 enum StatusEnum Open 1 Closed 2 InProgress 3
  • SQL Server CE 不兼容的数据库版本

    我有一个 SQL Server CE 4 0 数据库 sdf文件 当我尝试从我的应用程序 WPF 对数据库进行查询时 出现以下错误 数据库版本不兼容 如果这是兼容文件 请运行修复 其他情况请参考文档 数据库版本 4000000 请求的版本
  • 背景颜色变化

    SolidColorBrush bgColor public ModernBTN InitializeComponent this Loaded delegate object sender RoutedEventArgs e bgColo
  • WPF应用程序,在打开窗口之前运行异步任务

    我遇到了一个问题 我需要在主窗口打开并显示之前运行异步任务 IE STAThread static void Main string args MainWindow window new MainWindow SplashScreen Sh
  • 按钮 VisualState Focused 不起作用

    我试图在单击按钮时更改按钮的字体颜色 我尝试了很多不同的方法 但没有一个有效 这是我尝试过的最新方法 我认为应该是答案 但它不起作用 有人可以帮忙吗 PointerOver 工作正常 但单击按钮时 Focused 没有执行任何操作
  • OxyPlot 中日期时间轴上的不规则间隔

    我有一个 WPF 应用程序 其中使用 OxyPlot 来绘制图表 我不断地将点添加到图表中的线系列中 X 轴是日期时间轴 其间隔类型设置为秒 点不断添加到线系列中 当第一个点和最后一个点之间的时间跨度是特定的秒数时 我删除第一个点并使绘图无
  • 为什么我的 WPF XAML Grid TranslateTransform.X 不会?

    我可以使用它来更改网格的宽度 高度 那么为什么当我这样使用 Grid RenderTransform TranslateTransform X 时它不起作用
  • WPF:在 DependencyProperty.UnsetValue 上触发

    在回答中这个问题 https stackoverflow com questions 2596847 wpf applying a trigger on binding failure作出以下声明 理论上 可能 触发 x Static De
  • 何时引发 Window.SourceInitialized 事件

    我能保证Window SourceInitialized事件总是会在Window Loaded事件 我需要HwndSource在我的中进一步处理的对象Window Loaded 事件处理程序我不确定到那时这是否总是可用 以下是您可以预期的事
  • 如何在WPF中使用一次性视图模型?

    如果视图模型引用非托管资源或具有事件处理程序 例如调度程序计时器上的处理已过去 如何确保视图模型得到正确处理 在第一种情况下 终结器是一种选择 虽然并不理想 但在后者中 它永远不会被调用 我们如何判断何时不再有视图附加到视图模型 我通过执行
  • 将 System.Drawing.Image 转换为 System.Windows.Media.ImageSource 但没有结果

    我想在我的 WPF 应用程序中将 Image 转换为 ImageSource 我使用正常工作的 Code128 库 已在 WinForms 应用程序中检查 下面的函数返回具有适当大小的 ImageSource 但没有任何内容可见 priva
  • WPF MVVM将DataTable绑定到DataGrid不显示数据

    我有一个简单的控件 其中包含一个 DataGrid 其中 ItemsSource 绑定到 DataTable 当我填充 DataTable 时 我可以看到 DataGrid 中添加了行 但没有显示任何数据 我没有为此 DataGrid 使用
  • Xamarin - 在 xmlns clr 命名空间中找不到类型

    我正在制作一个 Xamarin Forms 应用程序 解决方案称为RESTTest 我的共享项目名为RestApp 在我的共享项目中 我有一个名为ViewModels 其中包含一个名为MainViewModel cs 我有一个名为MainP
  • ComboBox.ItemTemplate 未正确显示选择

    在问题中c wpf 无法同时设置 DisplayMemberPath 和 ItemTemplate https stackoverflow com questions 18273415 c sharp wpf cannot set both
  • 我如何移动粘性/捕捉 wpf 窗口

    当我移动 主 窗口时 我想移动两个或更多粘性窗口 我想做这样的事情 private void MainWindow PreviewMouseMove object sender MouseEventArgs e if e LeftButto
  • 如何创建一个没有边框且只能通过手柄调整大小的 WPF 窗口?

    如果你设置ResizeMode CanResizeWithGrip 在 WPF 上Window然后右下角会出现一个调整大小的夹点 如下 如果你设置WindowStyle None 标题栏也会消失 但灰色斜边仍然保留 直到您设置ResizeM
  • WPF TextBox:如何将默认绑定模式更改为 OneWay?

    最初 我有以下代码
  • 如何创建自动滚动文本框

    我有一个 WPF 应用程序 其中包含一个多行文本框 用于显示调试文本输出 如何设置文本框 以便将文本附加到框中时 它会自动滚动到文本框的底部 我正在使用 MVVM 模式 理想情况下 纯 XAML 方法会很好 TextBox 本身不一定是焦点
  • 使用 WF 的多线程应用程序的错误处理模式?

    我正在写一个又长又详细的问题 但只是放弃了它 转而选择一个更简单的问题 但我在这里找不到答案 应用程序简要说明 我有一个 WPF 应用程序 它生成多个线程 每个线程执行自己的 WF 处理线程和 WF 中的错误 允许用户从 GUI 端进行交互

随机推荐