3
我已將我的xml綁定到TreeView,並將我選擇的TreeViewItem綁定到TextBox。 現在我需要兩個TextBox。第一個應該在選擇TreeViewItem時啓用,並且如果該項目是其他類別爲「./title」,則必須將TextBox-Content的XPath更改爲「@name」。 而第二個應該只在選定的項目是卡時啓用。更改WPF中的XPath綁定動態
這隻能用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>
編輯:
一個嘗試這對於第二情況但它不能啓用文本框:
(僅啓用文本框,如果該元件是由型卡)
<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>
完美的作品在第一種情況下在第二種情況下,我只需要一個僅在元素來自類型卡時才啓用的文本框,您能告訴我這是如何完成的嗎?我不太熟悉datatriggers :-( – jwillmer 2011-03-23 12:09:24
@myName更新我的代碼與第二個文本框 – 2011-03-23 12:24:34
完美的作品!thx很多;-) – jwillmer 2011-03-23 12:30:59