私は、テキストブロックでtreeviewの選択項目を表示しようとしています。これは私のXAMLコード添付された依存関係プロパティから値をプロパティに設定する方法はありますか?
<Style TargetType="{x:Type TreeViewItem}">
<Style.Triggers>
<Trigger Property="IsSelected" Value="true">
<Setter Property="vm:HLViewModel.SelectedNode" Value="{Binding ElementName="tree",Path=SelectedItem}"/>
</Trigger>
</Style.Triggers>
</Style>
ここでは私がツリービューのIsSelectedプロパティがトリガされたときにセットされます添付したDependencyPropertyを作成した選択した項目に
<TextBlock Text="{Binding myText}"/>
を表示しようとしている私のテキストブロックです。どのようにコールバック関数でmyTextの値を設定できますか?
public class HLViewModel : DependencyObject
{
public myText{get;set;}
public static object GetSelectedNode(DependencyObject obj)
{
return (object)obj.GetValue(SelectedNodeProperty);
}
public static void SetSelectedNode(DependencyObject obj, object value)
{
obj.SetValue(SelectedNodeProperty, value);
}
public static readonly DependencyProperty SelectedNodeProperty =
DependencyProperty.RegisterAttached("SelectedNode", typeof(object), typeof(HLViewModel), new PropertyMetadata("def",SelectedNode_changed));
private static void SelectedNode_changed(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
// wanna set of myText property value here
}
'myText'はインスタンスプロパティです。あなたは 'HLViewModel'のインスタンスをどこに持っていますか?それはどこにある?あなたが創造している場所は私には見えません。 「何をしたい?」とは何ですか? –
TreeViewItemの添付プロパティを設定すると、添付プロパティが定義されているクラスのインスタンスが作成されると思いますか?そうではありません。 TreeViewItemにそのプロパティを追加しています。 –
@EdPlunkettこのコードはテスト用です。私の目標はtreeviewの選択項目を取得することです。ツリービューで選択されているものを表示するには、TextBlockが必要です。それはテストのためだけです。私たちはHLViewModelクラスのインスタンスを知らないので、静的関数内にmyText値を設定することはできません。 HLViewModelはnullを返します。 dはTreeViewItemに由来します。 –