任何人都可以提供以下帮助 - 一直在玩这个,但我一生都无法让它发挥作用。
我有一个包含以下属性的视图模型;
public ObservableCollection<Rule> Rules { get; set; }
public Rule SelectedRule { get; set; }
在我的 XAML 中,我有;
<ListBox x:Name="lbRules" ItemsSource="{Binding Path=Rules}"
SelectedItem="{Binding Path=SelectedRule, Mode=TwoWay}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="Name:" />
<TextBox x:Name="ruleName">
<TextBox.Text>
<Binding Path="Name" UpdateSourceTrigger="PropertyChanged" />
</TextBox.Text>
</TextBox>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
现在 ItemsSource 工作正常,我得到了一个 Rule 对象列表,它们的名称显示在 lbRules 中。
我遇到的麻烦是将 SelectedRule 属性绑定到 lbRules 的 SelectedItem。我尝试将文本块的文本属性绑定到 SelectedRule,但它始终为空。
<TextBlock Text="{Binding Path=SelectedRule.Name}" />
我在输出窗口中看到的错误是:BindingExpression path error: 'SelectedRule' property not found。
谁能帮我解决这个绑定 - 我不明白为什么它不应该找到 SelectedRule 属性。
然后我尝试将文本块的文本属性更改为波纹管,这有效。问题是我想在我的 ViewModel 中使用 SelectedRule。
<TextBlock Text="{Binding ElementName=lbRules, Path=SelectedItem.Name}" />
非常感谢您的帮助。