gpt4 book ai didi

wpf - 在 WPF 中动态更改 XPath 绑定(bind)

转载 作者:行者123 更新时间:2023-12-03 15:56:21 26 4
gpt4 key购买 nike

我已将我的 xml 绑定(bind)到 TreeView,并将我选择的 TreeViewItem 绑定(bind)到 TextBox。
现在我需要两个文本框。第一个应该在选择 TreeViewItem 时启用,并且如果项目是“./title”的类别,则必须将 TextBox-Content 的 XPath 更改为“@name”。
第二个应该仅在所选项目是卡片时启用。

这是否仅适用于 wpf?如何?

TreeView 输出:

o Categoryname
- something
o SubCategory
- something else
- text

XML:
<root>
<cards>
<category name="Categoryname">
<card>
<title>something</title>
<content>the content</content>
..
</card>
<category name="SubCategory">
<card>
<title>something else</title>
<content>the content</content>
...
</card>
</category>
</category>
<card>
<title>text</title>
<content>the content</content>
..
</card>
</cards>
</root>

文本框(就像现在一样):
<TextBox Name="textBoxTitel" 
DataContext="{Binding ElementName=listViewCards, Path=SelectedItem}"
Text="{Binding XPath=./title, UpdateSourceTrigger=PropertyChanged}"
IsReadOnly="False">
<TextBox.Style>
<Style TargetType="{x:Type TextBox}">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=listViewCards, Path=SelectedItem}" Value="{x:Null}">
<Setter Property="IsEnabled" Value="False"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>

编辑:

a 在第二种情况下尝试了这个,但它没有启用文本框:

(仅当元素来自类型卡时才启用文本框)
<TextBox IsEnabled="False" DataContext="{Binding ElementName=treeView, Path=SelectedItem}">
<TextBox.Style>
<Style TargetType="{x:Type TextBox}">
<Style.Triggers>
<DataTrigger Binding="{Binding LocalName}" Value="card">
<Setter Property="Text" Value="{Binding XPath=./question, UpdateSourceTrigger=PropertyChanged}"/>
<Setter Property="IsEnabled" Value="True"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>

最佳答案

我希望我理解这一点,那么这应该工作:

<TextBox Name="textBoxTitel" 
DataContext="{Binding ElementName=listViewCards, Path=SelectedItem}"
IsReadOnly="False">
<TextBox.Style>
<Style TargetType="{x:Type TextBox}">
<Style.Triggers>
<DataTrigger Binding="{Binding}" Value="{x:Null}">
<Setter Property="IsEnabled" Value="False"/>
</DataTrigger>
<DataTrigger Binding="{Binding LocalName}" Value="category">
<Setter Property="Text" Value="{Binding XPath=@name, UpdateSourceTrigger=PropertyChanged}"/>
</DataTrigger>
<DataTrigger Binding="{Binding LocalName}" Value="card">
<Setter Property="Text" Value="{Binding XPath=./title, UpdateSourceTrigger=PropertyChanged}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
<TextBox Name="secondTextBox"
DataContext="{Binding ElementName=listViewCards, Path=SelectedItem}"
IsReadOnly="False">
<TextBox.Style>
<Style TargetType="{x:Type TextBox}">
<Setter Property="IsEnabled" Value="False"/>
<Style.Triggers>
<DataTrigger Binding="{Binding LocalName}" Value="card">
<Setter Property="IsEnabled" Value="True"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>

关于wpf - 在 WPF 中动态更改 XPath 绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5399818/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com