我有ListView
與DataTemplate
,在這個模板中有幾個文本塊和一個按鈕。該按鈕具有固定項目的上下文菜單。 listviewitems的綁定工作正常,但將屬性綁定到contextmenu似乎不起作用。菜單項綁定datacontext在列表視圖
<ListView x:Name="lv_clients" Margin="0 22 0 0" SelectionMode="Single">
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
<Grid Grid.Column="0" Grid.RowSpan="2" Background="{Binding StateColor}">
</Grid>
<TextBlock Grid.Column="1" Text="{Binding DisplayString}" Foreground="Black" Height="20" FontWeight="Bold" Padding="2,2,0,0" />
<Button Click="Button_ListItem_Click" Grid.Column="1" Grid.Row="0" HorizontalAlignment="Right" VerticalAlignment="Top">
<Button.ContextMenu>
<ContextMenu>
<MenuItem Header="Anrufen" Name="mn_call" Click="mn_call_Click" DataContext={Binding Number} />
</ContextMenu>
</Button.ContextMenu> ...</Button>
<StackPanel Grid.Column="1" Grid.Row="1">
<TextBlock Text="{Binding State}" Height="20" Padding="2,2,0,0"/>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding FirstEntry.KDKGRS}" Height="20" FontWeight="Bold" Padding="2,2,2,0" HorizontalAlignment="Left" Foreground="{Binding FirstEntry.ConvertedKGFARBE}" />
<TextBlock Text="{Binding FirstEntry.ADNAMI}" Height="20" Padding="0,2,0,0" HorizontalAlignment="Left" />
</StackPanel>
</StackPanel>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
我已刪除的代碼(風格和columndefinitions)爲可讀性的一些不必要的位。
重要的部分是Button
裏面的MenuItem
。我的基礎類有一個公共字符串屬性Number
。這應該傳遞給菜單項。但MenuItem
的DataContext
在click事件中始終爲空。
我已經閱讀了一些關於contextmenu的信息,但並沒有將其視爲可視樹的一部分,但我無法將其包裹在它的周圍。有人能解釋這個問題嗎?
編輯代碼爲基礎類: 再次除去一些不必要的代碼的問題
public class PhoneClient
{
public String Name { get; set; }
public String Number { get; set; }
public String Extension { get; set; }
public String DisplayString
{
get
{
return String.IsNullOrEmpty(Name) ? Number : String.Format("{0} ({1})", Name, Extension);
}
}
}
而且列表框的結合:
List<PhoneClient> clients = new List<PhoneClient>();
clients = load(); //returns active Clients
lv_clients.ItemsSource = clients;
你能顯示數字代碼物業嗎? –