そのため、投稿項目 (配達日、タイプ、追跡番号など) を表示するリスト ビューがあり、追跡 Web サイトを開くか、追跡番号をクリップボードにコピーするコンテキスト メニューを設定しています。
私が欲しいのは、追跡番号のあるリストアイテムにのみコンテキストメニューが表示されるようにすることです。コンテキスト メニューの可視性を変更するアイデアはありますが、これは問題のある追跡番号へのバインドです。
<ContextMenu x:Key="MyElementMenu">
<MenuItem Header="Track Item" Click="MenuItem_Click"></MenuItem>
<MenuItem Header="Copy to Clipboard" Click="MenuItem_CopyToClipboard"></MenuItem>
</ContextMenu>
<!--Sets a context menu for each ListBoxItem in the current ListBox-->
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="ContextMenu" Value="{StaticResource MyElementMenu}"/>
</Style>
これが私が現在持っているものです。
<MyControl.Resources>
<BooleanToVisibilityConverter x:Key="BoolToVis"/>
</MyControl.Resources>
<!--Sets a context menu for each ListBoxItem in the current ListBox-->
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="ContextMenu">
<Setter.Value>
<ContextMenu IsEnabled="{Binding HasTrackingNumber}" Visibility="{Binding HasTrackingNumber, Converter={StaticResource BoolToVis}">
<MenuItem Header="Track Item" Click="MenuItem_Click"></MenuItem>
<MenuItem Header="Copy to Clipboard" Click="MenuItem_CopyToClipboard"></MenuItem>
</ContextMenu>
</Setter.Value>
</Setter>
</Style>
これにより、必要なものが得られるはずです。ContextMenu を他の場所で使用するかどうかはわかりませんが、使用しない場合は、ListViewItem スタイルのスタイルでいつでも設定できます。その後、他の場所から参照する必要はありません。いずれにせよ、アイテムから Binding を追加することについての詳細です。ListItem Viewmodel では、次のようなものを追加できます。
public bool HasTrackingNumber => TrackingNumber == 0 || TrackingNumber == null;
(追跡番号のタイプがわからないので、独自のロジック チェックを実行して、有効な追跡番号が「ある」かどうかを確認できます)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加