将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模式绑定,而不仅仅是在编译时分配值

将wpf对象属性绑定到类属性-通常的方式对我不起作用

给定类似的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>