customcontrol:使用字符串但不使用绑定设置文本操作;默认按钮,而是相同的绑定方式

时间:2019-08-14 19:48:24

标签: c# wpf xaml data-binding dependency-properties

我使用了一个自定义控件,该控件具有一个依赖属性标题,该标题绑定到其中的标签。 我可以在xaml中使用字符串设置标题属性,但不能使用{Binding title}设置标题属性。 如果我使用有效的<Button content={Binding title}

我真的不知道在哪里看这个,因为我猜string是string ..?

作品
<Button Content="{Binding title}" Click="Button_Click_2">

作品

<PluginInterface:uc_item Title="TEST" OnClick="Button_Click_2"></PluginInterface:uc_item>

不起作用
<PluginInterface:uc_item Title="{Binding title}" OnClick="Button_Click_2"></PluginInterface:uc_item>

依赖属性

 public string Title
        {
            get { return (string)GetValue(TitleProperty); }
            set
            {

                SetValue(TitleProperty, value);
            }
        }
        public static readonly DependencyProperty TitleProperty =
            DependencyProperty.Register("Title", typeof(string), typeof(uc_item),
        new FrameworkPropertyMetadata(default(string),
            FrameworkPropertyMetadataOptions.BindsTwoWayByDefault));

这是控件的容器


<ItemsControl Name="ic_searchengines" >
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>

IM设置了另一个班级中项目控件的项目

searchengines = new ObservableCollection<searchengine>();
main.ic_searchengines.ItemsSource = searchengines;                                                      

第一个示例中带有按钮的绑定确实显示了内容中的绑定文本; 在第二个示例中,在cusotm用户控件上设置字符串将在usercontrol上显示文本; 第三个示例,与第一个按钮等效的绑定的确在usercontrl上显示为空白。

谢谢!展望

1 个答案:

答案 0 :(得分:0)

有一个自定义用户控件的数据上下文集-通过绑定与后台代码中的属性来馈送控件。我必须将其删除,以便可以在外部设置正确的数据上下文(多个实例在其中使用对不同属性的绑定),并向其中的单个控件添加了带有findancestor的修改版本:DataContext =“ {Binding RelativeSource = {RelativeSource FindAncestor, AncestorType = local:uc_item}}“