내 WPF 응용 프로그램이 두 개의 서로 다른 int
속성을 기반으로 여러 부울 속성을 가진보기 모델 개체가 기반으로 스타일을 만드는 데 도움이 필요 사물. 개체의 데이터에는 Border
컨트롤 안에 미리보기 이미지로 표시되는 이미지가 포함되어 있습니다. BorderBrush
및 BorderThickness
속성 값은 부울 속성에서 파생 된 일부 조건에 따라 다릅니다. C#에서, 이러한 조건에 대한 코드는 다음과 같습니다는 몇 가지 조건
<DataTempate DataType="{x:Type local:MyViewModel}">
<Border BorderBrush="Black"
BorderThickness="2"
HorizontalAlignment="Center"
Margin="5"
Height="100"
Name="Border"
VerticalAlignment="Center"
Width="100">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Image Grid.Row="0"
Name="AlarmImage"
Source="{Binding Path=Image}"
Stretch="Fill" />
<local:ResponseTimer Expired="Timer_Expired"
Grid.Row="1"
HideIfStatus1="True"
IsTabStop="False"
MinHeight="10"
x:Name="TheTimer"
TimeoutPeriod="00:02:30"
VerticalAlignment="Bottom" />
</Grid>
</Border>
</DataTemplate>
나는 시도 :
string color = alarm.IsClass1 ? "BorderColor1" :
alarm.IsStatus1 ? "BorderColor2" :
alarm.IsStatus2 ? "BorderColor3" :
alarm.IsStatus3 ? "BorderColor4" :
"BorderColor5";
Border.SetResourceReference(BorderBrushProperty, color);
Border.BorderThickness = new Thickness(alarm.IsStatus1 || alarm.IsStatus3 ? 4.0 : 2.0);
내가 ListBox
에서 사용되는 DataTemplate
에 대한 XAML에 Style
에이를 데려 가고 싶다는 다음과 같이 작동하지만 작동하지 않습니다.
<Style TargetType="Border">
<Setter Property="BorderBrush" Value="{DynamicResource BorderColor5}" />
<Setter Property="BorderThickness" Value="2" />
<Style.Triggers>
<DataTrigger Binding="{Binding Path=IsStatus1}" Value="true">
<Setter Property="BorderThickness" Value="4" />
</DataTrigger>
<DataTrigger Binding="{Binding Path=IsStatus3}" Value="true">
<Setter Property="BorderThickness" Value="4" />
</DataTrigger>
<DataTrigger Binding="{Binding Path=IsClass1}" Value="True">
<Setter Property="BorderBrush" Value="{DynamicResource BorderColor1}" />
</DataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Path=IsClass1}" Value="False" />
<Condition Binding="{Binding Path=IsStatus1}" Value="True" />
</MultiDataTrigger.Conditions>
<Setter Property="BorderBrush" Value="{DynamicResource BorderColor2}" />
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Path=IsClass1}" Value="False" />
<Condition Binding="{Binding Path=IsStatus2}" Value="True" />
</MultiDataTrigger.Conditions>
<Setter Property="BorderBrush" Value="{DynamicResource BorderColor3}" />
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Path=IsClass1}" Value="False"/>
<Condition Binding="{Binding Path=IsStatus3}" Value="True" />
</MultiDataTrigger.Conditions>
<Setter Property="BorderBrush" Value="{DynamicResource BorderColor4}" />
</MultiDataTrigger>
</Style.Triggers>
</Style>
내가 뭘 잘못하고 있니?
아마이 경우 값 또는 다중 값 변환기가 있어야합니다. –