0
在我的WPF應用程序中,我向TreeViewItems添加了一個TreeView控件綁定類數據。我已經向treeviewitems添加了一個上下文菜單。 contextMenu的處理程序沒有開火。這裏是TreeView的XAML代碼。上下文菜單觸發器沒有在TreeViewItem上觸發
<TreeView ItemsSource="{Binding pads}" Width="190">
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
<Setter Property="FontWeight" Value="Normal" />
<Setter Property="ContextMenu">
<Setter.Value>
<ContextMenu>
<MenuItem Header="Rename" Command="{Binding RenameCommand}"/>
</ContextMenu>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="FontWeight" Value="Bold" />
</Trigger>
</Style.Triggers>
</Style>
</TreeView.ItemContainerStyle>
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Members}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}" />
<TextBlock Text=" [" Foreground="Blue" />
<TextBlock Text="{Binding Members.Count}" Foreground="Blue" />
<TextBlock Text="]" Foreground="Blue" />
</StackPanel>
<HierarchicalDataTemplate.ItemTemplate>
<DataTemplate DataType="{x:Type vm:PadInfo}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="["></TextBlock>
<TextBlock Text="{Binding SlotID}" />
<TextBlock Text="] ["></TextBlock>
<TextBlock Text="{Binding WellID}" />
<TextBlock Text="]"></TextBlock>
</StackPanel>
</DataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
這些是綁定到TreeView的兩個類。
/// <summary>
/// Class to hold the Pads info for a tree
/// </summary>
public class Pad
{
/// <summary>
/// Default Constructor
/// </summary>
public Pad()
{
this.Members = new ObservableCollection<PadInfo>();
}
/// <summary>
/// Name of the pad
/// </summary>
public string Name { get; set; }
/// <summary>
/// Members of the pad
/// </summary>
public ObservableCollection<PadInfo> Members { get; set; }
}
/// <summary>
/// Class to hold the well and slot IDs snapped to a pad
/// </summary>
public class PadInfo
{
/// <summary>
/// Slot ID
/// </summary>
public string SlotID { get; set; }
/// <summary>
/// Well ID
/// </summary>
public string WellID { get; set; }
}
}
該成員綁定到TreeView
public List<Pad> pads { get; set; }
當我右鍵點擊菜單項,在RenameCommand事件不會開火。 當我更改爲處理程序被解僱但TreeView沒有填充綁定數據。
請幫忙。 謝謝
當我使用TreeViewItem代替TreeView.ItemTemplate時,同樣的命令被觸發。所以我不認爲問題是用Command或DataContext。 當我爲此 <鍵綁定密鑰= 「F2」 命令= 「{結合的RelativeSource = {的RelativeSource AncestorType = {X:類型樹視圖}},路徑= DataContext.RenameCommand}」/> 並按F2相同的命令火災。 – WAQ
它不依賴於treeviewitem/template。命令和事件之間的區別在於,在WPF(或其他)中的事件中,您正在定義執行的方法。使用Command綁定你有一個屬性。而這個屬性包含了應該執行的動作。但是這裏沒有這個代碼。 – Tintenfiisch
這裏是我的命令處理程序 private ICommand _RenameCommand; 公衆的ICommand RenameCommand { 得到 { 如果(_RenameCommand == NULL){ _RenameCommand =新RelayCommand1((0)=> {MessageBox.Show( 「重命名我」);}); } return _RenameCommand; } } – WAQ