I have Listbox which is bound to my view model. This view model has a property
I need the item to be visible but unclickable with the change of this field. Any suggestion anyone
public interface IRegionAreaDM
{
/// <summary>
/// Name of the Focus Area
/// </summary>
string RegionAreaName { get; set; }
/// <summary>
/// Determines if the Tab is currently selected.
/// </summary>
bool IsSelected { get; set; }
/// <summary>
/// Determines if the Tab is linked to any other Tab
/// </summary>
bool IsLinked { get; set; }
/// <summary>
///
/// </summary>
bool IsActive { get; set; }
}
Each item is connected to an item in the XAML eg Name with a Textbox . IsSelected with a CheckBox and IsActive is to make the ListBoxItems Enabled/Disabled depending on the logic
and my Xaml style loooks something like this
<Style TargetType="ListBoxItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<Border x:Name="Bd" HorizontalAlignment="Stretch" Background="#00D05252"
BorderThickness="0,1" SnapsToDevicePixels="true">
<!-- <StackPanel x:Name="ParamterRoot" Orientation="Horizontal"> -->
<Grid x:Name="ParamterRoot">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<CheckBox x:Name="ParametersCheckbox" Grid.Column="0" Margin="10,0,0,0"
VerticalAlignment="Center" IsChecked="{Binding IsSelected}"
<TextBlock Grid.Column="1" Width="Auto" Margin="20,7.5,0,7.5"
Text="{Binding RegionAreaName}" TextTrimming="CharacterEllipsis">
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Style.Triggers>
<Trigger Property="IsMouseDirectlyOver" Value="True">
<Setter Property="Cursor" Value="Hand" />
</Trigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</Grid>
<!-- </StackPanel> -->
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter TargetName="Bd" Property="Background" Value="#FFC10000" />
</Trigger>
<Trigger Property="IsSelected" Value="true">
<Setter TargetName="Bd" Property="Background" Value="#FFC10000" />
</Trigger>
<DataTrigger Binding="{Binding IsActive}" Value="False">
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Code Behind: (you are using MVVM so you will adjust this code a little but to fit to your pattern)
XAML:
Hope This Help