c# - 对于用户控件,如何设置项模板项到用户属性的绑定(bind)?

标签 c# wpf vb.net silverlight binding

我有一个简单的用户控件,它本质上只是一个带有一些自定义逻辑的自动完成框。

对于一个特定的实例(一组人),我希望它看起来像这样:

<sdk:AutoCompleteBox Name="myACB" ItemsSource="{Binding People}" FilterMode="StartsWith" MinimumPrefixLength="2" ValueMemberBinding={Binding LastName}>
  <sdk:AutoCompleteBox.ItemTemplate>
    <DataTemplate>
      <TextBlock Text="{Binding LastName}" />
    </DataTemplate>
  </sdk:AutoCompleteBox.ItemTemplate>
</sdk:AutoCompleteBox>

但是,我想让数据源通用,因此显示值会有所不同(ValueMemberBinding 和模板 TextBlock 文本)。这就是我制作自定义控件的原因,以便我可以指定属性的差异。

我在使用用户控件属性设置源时没有问题,但我在显示绑定(bind)属性方面遇到了困难。现在我有:

public static DependencyProperty DisplayMemberProperty = DependencyProperty.Register("DisplayMember", typeof(string), typeof(myAutoComplete), null);

public string DisplayMember
{
    get
    { return myACB.ValueMemberPath; }
    set
    {
        myACB.ValueMemberPath = value; // this works fine
        // but how can set the text binding for the templated textblock?
    }
}

我希望 DisplayMember 属性成为我绑定(bind)到 AutoCompleteBox 的任何类型的自定义集合(人、汽车等)显示的属性名称。

我认为我无法以编程方式修改数据模板。有没有办法通过绑定(bind)(相对来源)来做到这一点?

最佳答案

我不确定这是否可行,但我认为您可以将文本直接绑定(bind)到 ValueMemberBinding 属性并使用转换器从中获取文本...

关于c# - 对于用户控件,如何设置项模板项到用户属性的绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3992526/

相关文章:

wpf - 为什么在嵌套 XAML 中编写时绑定(bind)语法不同

Vb.net + 文本框中的自动完成

c# - 使用列表邮件时,Outlook 邮件 API 返回拼写检查类名称作为 html 响应的一部分

c# - 如何修复错误 : The message received from the server could not be parsed

c# - 获取图像的高度和宽度

vb.net - 在 VB 中允许扩大转换

c# - 如何检测 webview2 中的鼠标点击(c#/vb.net)

c# - EF Core 2.1 HasData() 在后续迁移中为未更改的实体创建删除和重新插入

c# - 如何在 xamarin.forms 中的 xaml 中大写/小写 resx 绑定(bind)?

c# - 类型 "Binding"的 DependencyProperty 未更新