【发布时间】:2019-01-07 12:16:11
【问题描述】:
我目前正在尝试编写一个代码,其重点是将三个传入变量与用户控件绑定。最后一个,按照计划,应该根据 IMultiValueConverter 中实现的逻辑交换颜色。
<UserControl
x:Class="TestApp_WPF.User_Controls.Axis"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Converters="clr-namespace:TestApp_WPF.Converters"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:TestApp_WPF.User_Controls"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
x:Name="UserControl_Axis"
d:DesignHeight="300"
d:DesignWidth="300"
mc:Ignorable="d">
<UserControl.Resources>
<Converters:WyeDeltaMultiConverter x:Key="WDMultiConverter" />
</UserControl.Resources>
<Grid>
<Ellipse
Width="17"
Height="17"
Stroke="Black">
<Ellipse.Fill>
<MultiBinding Converter="{StaticResource WDMultiConverter}">
<Binding Path="Prty_L_feedback" />
<Binding Path="Prty_D_feedback" />
<Binding Path="Prty_Axis_failed" />
</MultiBinding
</Ellipse.Fill>
</Ellipse>
</Grid>
</UserControl>
WDMultiConverter:
class WyeDeltaMultiConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
bool? state_0 = values[0] as bool?;
bool? state_1 = values[1] as bool?;
bool? state_2 = values[2] as bool?;
if (state_0 == null && state_1 == null && state_2 == null)
return Brushes.OrangeRed;
if (state_0 == true && state_1 == null && state_2 == null)
return Brushes.Azure;
if (state_0 == true && state_1 == true && state_2 == null)
return Brushes.LawnGreen;
if (state_0 == true && state_1 == true && state_2 == null)
return Brushes.OrangeRed;
return Brushes.WhiteSmoke;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
请给点建议!
【问题讨论】:
-
“交换颜色”?您的转换器采用三个布尔值并返回一个画笔。您希望它返回什么画笔,运行应用程序时它实际返回什么? Brushes.OrangeRed 将永远不会被返回,因为您正在为相同的条件返回 Brushes.LawnGreen。
-
Converter 中的代码只是一个草图。我对其他的东西很感兴趣。如何正确绑定Multibinding。
-
我建议你设置一个断点,看看你实际得到了什么。
-
只是一个草图?那你想做什么?你的转换器返回什么刷子?您将在 Ellipse 中看到的就是这个。
-
我对其他东西很感兴趣。如何正确绑定多重绑定?我认为如果我正确地进行 MultiBinding,我将能够解决所有逻辑问题。
标签: c# wpf visual-studio binding