WPFにリストボックスがあり、アイテムを選択すると、whenい色が表示されます。すべてのアイテムを選択不可にできますか?
選択する必要がない場合は、ItemsControl
ではなくListBox
を使用します
ListBoxItemスタイルでFocusableプロパティをfalseとして追加します。
<Style x:Key="{x:Type ListBoxItem}" TargetType="{x:Type ListBoxItem}">
<!-- Possibly other setters -->
<Setter Property="Focusable" Value="False" />
</Style>
それらを選択可能にしたくない場合は、おそらくリストビューは必要ありません。しかし、これが本当に必要なものである場合、スタイルでそれを行うことができます:
<Page
xmlns="http://schemas.Microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.Microsoft.com/winfx/2006/xaml">
<Page.Resources>
<Style x:Key="{x:Type ListBoxItem}" TargetType="{x:Type ListBoxItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBoxItem}">
<Border
Name="Border"
Padding="2"
SnapsToDevicePixels="true">
<ContentPresenter />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="true">
<Setter TargetName="Border" Property="Background" Value="#DDDDDD"/>
</Trigger>
<Trigger Property="IsEnabled" Value="false">
<Setter Property="Foreground" Value="#888888"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Page.Resources>
<Grid>
<ListBox>
<ListBoxItem>One</ListBoxItem>
<ListBoxItem>Two</ListBoxItem>
<ListBoxItem>Three</ListBoxItem>
</ListBox>
</Grid>
</Page>
IsSelectedトリガーを見てください。境界線を別の色にして、「Uい」ようにしたり、透明に設定したりして、選択したときに表示されないようにすることができます。
お役に立てれば。
これをリストボックス内で使用してください。この非常にエレガントなソリューションを見つけました
<ListBox ItemsSource="{Binding YourCollection}">
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="Focusable" Value="False"/>
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
さらに簡単な方法があります:set ListBox
property IsHitTestVisible="False"
。これにより、リスト内のすべてのアイテムがマウスイベントを受信できなくなります。これには、マウスオーバー時にも強調表示を停止できるという利点があります。
WP 7.1。
これを行う簡単な方法(上記vikyの回答を使用)は、次のようにSelectionChanged()で選択したインデックスを-1に設定することです。
public void OnListView_SelectionChanged(Object sender, RoutedEventArgs e)
{
if (null != sender && sender is ListView)
{
ListView lv = sender as ListView;
lv.SelectedIndex = -1;
}
}
イベントを避ける方が良いのですが、よりエレガントで副作用のないStyleタグです。
<ListBox>
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="IsEnabled" Value="False"/>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
... what you want as a source ...
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
listBoxのSelectionChangedイベントを処理し、イベントハンドラーで選択した項目の選択を解除できます。
誰かがまだ選択できないListBoxItem(またはListViewItem)機能を必要としている場合。 http://thrash505.wordpress.com/2011/01/04/non-selectable-listboxitem-or-listviewitem-using-attached-properties/
私の場合、TextblockとComboBoxでテンプレート化されたListboxItemがありました。唯一の「アクティブ」はコンボ...
<ScrollViewer VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Disabled"
CanContentScroll="True" />
<ItemsControl>
....here my content....
</Itemscontrol>
</ScrollViewer>
期待どおりに機能しました。 BR、ダニエル
無効なリストボックスを作成することもできます。これにより、静的で非対話的なリストボックスが提供されます。
<ListBox IsEnabled="False"/>
これは可能な限りシンプルなソリューションだと思います。