8,735
社区成员
发帖
与我相关
我的任务
分享
<DataGridTemplateColumn Header="实时报警">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<WrapPanel Visibility="{Binding Path=Category, Converter={StaticResource armingProperty2VisibilityConverter}}">
<RadioButton x:Name="radTurnOn" Content="开" Checked="radTurnOn_Checked"
IsChecked="{Binding Path=ArmingPropertyPro,
Converter={StaticResource armingProperty2BoolConverter},
Mode=OneTime}"/>
<RadioButton x:Name="radTurnOff" Content="关" Checked="radTurnOff_Checked"
IsChecked="{Binding Path=ArmingPropertyPro,
Converter={StaticResource armingProperty2BoolReverseConverter},
Mode=OneTime/>
</WrapPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGrid ItemsSource="{Binding ElementName=nodesSetCtrl, Path=NodeList}"/>
public ObservableCollection<Node> NodeList
System.Windows.Data Error: 40 : BindingExpression path error: 'ArmingPropertyPro' property not found on 'object' '
'Node' (HashCode=20106484)'. BindingExpression:Path=ArmingPropertyPro; DataItem='Node' (HashCode=20106484);
target element is 'RadioButton' (Name='radTurnOn'); target property is 'IsChecked' (type 'Nullable`1')
<RadioButton x:Name="radTurnOn" Content="开" IsChecked="{Binding Mode=OneTime,Converter={StaticResource armingProperty2BoolReverseConverter}}"/>
然后在Converter里面就可以判断了:
AlarmCatagoryNode temp = value as AlarmCatagoryNode;
if (temp != null) {
//
}
<WrapPanel Visibility="{Binding Path=Category,
Converter={StaticResource armingProperty2VisibilityConverter}}">
<RadioButton x:Name="radTurnOn" Content="开" Checked="radTurnOn_Checked"
IsChecked="{Binding Path=ArmingPropertyPro,
Converter={StaticResource armingProperty2BoolConverter}, Mode=OneTime}"/>
<RadioButton x:Name="radTurnOff" Content="关" Checked="radTurnOff_Checked"
IsChecked="{Binding Path=ArmingPropertyPro,
Converter={StaticResource armingProperty2BoolReverseConverter},Mode=OneTime/>
</WrapPanel>
我就是这样做的啊:IsChecked属性绑定转换类——ArmingProperty2BoolConverter
显示绑定转换类——ArmingProperty2VisibilityConverter
这就是两个装换类啊?
你的意思是怎么绑定?[/quote]
你这样逻辑不正确吧?? Node类中本来就没有ArmingPropertyPro属性,你的集合是ObservableCollection<Node>,你怎么绑定也绑定不上的。[/quote]
你也可以converter一下Path, Path={bing}
在Converter类里:
if((object as AlarmCatagoryNode)==null){
return null;
}
else
{
// 判断有没有那个属性 再返回。
return ArmingPropertyPro;
}
我感觉是这样。[/quote]
呵呵。。。。。。。
出现了这个错误:好拗口啊:)
Binding不能嵌套吧?
[/quote]
<WrapPanel Visibility="{Binding Path=Category,
Converter={StaticResource armingProperty2VisibilityConverter}}">
<RadioButton x:Name="radTurnOn" Content="开" Checked="radTurnOn_Checked"
IsChecked="{Binding Path=ArmingPropertyPro,
Converter={StaticResource armingProperty2BoolConverter}, Mode=OneTime}"/>
<RadioButton x:Name="radTurnOff" Content="关" Checked="radTurnOff_Checked"
IsChecked="{Binding Path=ArmingPropertyPro,
Converter={StaticResource armingProperty2BoolReverseConverter},Mode=OneTime/>
</WrapPanel>
<WrapPanel Visibility="{Binding Path=Category,
Converter={StaticResource armingProperty2VisibilityConverter}}">
<RadioButton x:Name="radTurnOn" Content="开" Checked="radTurnOn_Checked"
IsChecked="{Binding Path=ArmingPropertyPro,
Converter={StaticResource armingProperty2BoolConverter}, Mode=OneTime}"/>
<RadioButton x:Name="radTurnOff" Content="关" Checked="radTurnOff_Checked"
IsChecked="{Binding Path=ArmingPropertyPro,
Converter={StaticResource armingProperty2BoolReverseConverter},Mode=OneTime/>
</WrapPanel>
我就是这样做的啊:IsChecked属性绑定转换类——ArmingProperty2BoolConverter
显示绑定转换类——ArmingProperty2VisibilityConverter
这就是两个装换类啊?
你的意思是怎么绑定?[/quote]
你这样逻辑不正确吧?? Node类中本来就没有ArmingPropertyPro属性,你的集合是ObservableCollection<Node>,你怎么绑定也绑定不上的。[/quote]
你也可以converter一下Path, Path={bing}
在Converter类里:
if((object as AlarmCatagoryNode)==null){
return null;
}
else
{
// 判断有没有那个属性 再返回。
return ArmingPropertyPro;
}
我感觉是这样。<WrapPanel Visibility="{Binding Path=Category,
Converter={StaticResource armingProperty2VisibilityConverter}}">
<RadioButton x:Name="radTurnOn" Content="开" Checked="radTurnOn_Checked"
IsChecked="{Binding Path=ArmingPropertyPro,
Converter={StaticResource armingProperty2BoolConverter}, Mode=OneTime}"/>
<RadioButton x:Name="radTurnOff" Content="关" Checked="radTurnOff_Checked"
IsChecked="{Binding Path=ArmingPropertyPro,
Converter={StaticResource armingProperty2BoolReverseConverter},Mode=OneTime/>
</WrapPanel>
我就是这样做的啊:IsChecked属性绑定转换类——ArmingProperty2BoolConverter
显示绑定转换类——ArmingProperty2VisibilityConverter
这就是两个装换类啊?
你的意思是怎么绑定?[/quote]
你这样逻辑不正确吧?? Node类中本来就没有ArmingPropertyPro属性,你的集合是ObservableCollection<Node>,你怎么绑定也绑定不上的。<WrapPanel Visibility="{Binding Path=Category,
Converter={StaticResource armingProperty2VisibilityConverter}}">
<RadioButton x:Name="radTurnOn" Content="开" Checked="radTurnOn_Checked"
IsChecked="{Binding Path=ArmingPropertyPro,
Converter={StaticResource armingProperty2BoolConverter}, Mode=OneTime}"/>
<RadioButton x:Name="radTurnOff" Content="关" Checked="radTurnOff_Checked"
IsChecked="{Binding Path=ArmingPropertyPro,
Converter={StaticResource armingProperty2BoolReverseConverter},Mode=OneTime/>
</WrapPanel>
我就是这样做的啊:IsChecked属性绑定转换类——ArmingProperty2BoolConverter
显示绑定转换类——ArmingProperty2VisibilityConverter
这就是两个装换类啊?
你的意思是怎么绑定?
<RadioButton x:Name="radTurnOn" Content="开" Checked="radTurnOn_Checked" IsChecked="{Binding Converter={StaticResource armingProperty2BoolConverter}, Mode=OneTime}"/>
然后在Converter中这样处理:
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
Nodes.AlarmCatagoryNode tempNode = value as Nodes.AlarmCatagoryNode;
if (tempNode != null)
{
if (tempNode.ArmingPropertyPro == ArmingProperty.永久布防)
{
return true;
}
else if (tempNode.ArmingPropertyPro == ArmingProperty.默认属性)
{
return false;
}
else
{
throw new Exception("布防属性,收到未知值!");
}
}
else
{
return null;
}
}