将wpf对象属性绑定到类属性-通常的方式对我不起作用
本文关键字:属性 方式 不起作用 对象 wpf 绑定 -通 | 更新日期: 2023-09-27 17:58:07
!嗨,伙计们。我有个问题=(这样的绑定(就像这里的例子和答案中的任何地方一样)在我的情况下都不起作用:
Binding b = new Binding("MyTextPath");
b.Source = YourDataClass;
b.Mode = BindingMode.TwoWay;
myTextBox.SetBinding(TextBox.TextProperty, b);
因此,我有一个类"configVM"的实例"_configVM",它有一个属性"name"。需要将此属性绑定到"TextBlock.Text"。这是我的代码:
Binding _textBinding = new Binding("name");
_textBinding.Source = _configVM;
_textBinding.Mode = BindingMode.TwoWay;
TextBlock _textBlockUI = new TextBlock() { Style = (Style)Application.Current.MainWindow.Resources["treeTextBlock"] };
_textBlockUI.SetBinding(TextBlock.TextProperty, _textBinding);
或者另一种选择:
Binding _textBinding = new Binding();
_textBinding.Source = _configVM;
_textBinding.Mode = BindingMode.TwoWay;
_textBinding.Path = new PropertyPath("name");
TextBlock _textBlockUI = new TextBlock() { Style = (Style)Application.Current.MainWindow.Resources["treeTextBlock"] };
_textBlockUI.SetBinding(TextBlock.TextProperty, _textBinding);
两者都不起作用,我得到空白的"文本块"。其他一切都可以,因为这段代码用"name"填充"TextBlock"(添加Text=_configVM.name):
TextBlock _textBlockUI = new TextBlock() { Text = _configVM.name, Style = (Style)Application.Current.MainWindow.Resources["treeTextBlock"] };
_textBlockUI.SetBinding(TextBlock.TextProperty, _textBinding);
但我需要以TwoWay模式绑定,而不仅仅是在编译时分配值
给定类似的ConfigVM
类
public class ConfigVM
{
public string Name { get; set; }
}
也许还有像这样的主视图模型
public class MainVM
{
public ObservableCollection<ConfigVM> ConfigItems { get; set; }
}
您可以很容易地在XAML中创建ItemsControl,如下所示:
<ItemsControl ItemsSource="{Binding ConfigItems}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>