2017-10-04 17 views
0

ツリービューのボタンをメソッドにバインドする方法は、そのノードの名前がわかりますか? は、これまでのところ私は(「あなたは123をクリックした」)メッセージボックスで、たとえば私を知らせる方法を書くためにどのようにこのC#WPFツリー内のノード内のボタン

this

を得ましたか。

XAML:

<TreeView Name="trvDevices" HorizontalAlignment="Right" Margin="0,135,9,16" Width="193" > 
        <TreeView.Resources> 
         <HierarchicalDataTemplate DataType="{x:Type self:WirelessCable}" ItemsSource="{Binding Members}"> 
          <StackPanel Orientation="Horizontal"> 
           <Image Margin="0,0,5,0" /> 
           <TextBlock Text="{Binding Name}" /> 
           <TextBlock Text=" [" Foreground="Blue" /> 
           <TextBlock Text="{Binding Members.Count}" Foreground="Blue" /> 
           <TextBlock Text="]" Foreground="Blue" /> 

          </StackPanel> 
         </HierarchicalDataTemplate> 
         <DataTemplate DataType="{x:Type self:Device}"> 
          <StackPanel Orientation="Horizontal"> 
           <Image Margin="0,0,5,0" /> 
           <TextBlock Text="{Binding ID}" /> 
           <TextBlock Text=" - " /> 
           <TextBlock Text="{Binding ConnectionStatus}"/> 
           <TextBlock Text=", " /> 
           <TextBlock Text="{Binding Armed}"/> 
           <Button x:Name="btnTRV" Content="Click" Width="40" Height="20"></Button> 
          </StackPanel> 
         </DataTemplate> 
        </TreeView.Resources> 
       </TreeView> 

CS:コメントの一つは言ったが、デフォルトのDataContextがあることを行っているよう

public class WirelessCable 
{ 
    public WirelessCable() 
    { 
     this.Members = new ObservableCollection<Device>(); 
    } 

    public string Name { get; set; } 

    public ObservableCollection<Device> Members { get; set; } 
} 
public class Device 
{ 
    public int ID { get; set; } 
    public string Armed { get; set; } 
    public string ConnectionStatus { get; set; } 
} 

よろしく

+0

[ICommand](https://msdn.microsoft.com/en-us/library/system.windows.input.icommand(v = vs.110).aspx)をそれにバインドすることができます: '

+0

RxUI、MvvmLightなどのさまざまなライブラリには、独自の実装があります。または、次のように自分自身を実装することもできます:https://stackoverflow.com/questions/22285866/why-relaycommand – Xiaoy312

答えて

0

あなたはボタンにICommandのをバインドすることができますあなたのPOCOオブジェクトは、静的なグローバルオブジェクトを作成するか、RelativeSource/FindAncenstorを使用してViewまたはVMにアクセスする必要があります。そうしないと、POCOに配置する必要があります。

関連する問題