WPF绑定的问题

stg609 2010-02-19 12:06:07
我要将一个布尔属性绑定到WPF的两个控件上去,但是这两个控件所期望的值刚好相反,这种情况应该怎么办?

大家如果没看明白的话,请看例子:
在一个viewmodel类中有一个自定义属性
bool VisibleProperty
{
get{...}
set{...}
}

现在在UI中有两个控件,一个用于显示太阳,一个用于显示月亮,分别表示白天和晚上(即太阳和月亮不能同时显示)。如果两控件都绑定到该属性(如下所示写法肯定是实现不了的),该如何修改呢?
<UserControl Name="太阳" Visibility="{Binding VisibleProperty}" />
<UserControl Name="月亮" Visibility="{Binding VisibleProperty}" />
...全文
119 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
stg609 2010-02-19
  • 打赏
  • 举报
回复
@w59879213
你的回复好详细,谢谢,我采用的是第二种方法。
jackson35296 2010-02-19
  • 打赏
  • 举报
回复
支持楼上的,我一般用属性转换器
Jeremiah 2010-02-19
  • 打赏
  • 举报
回复
1. 再定义一个VisibleProperty2, 将其值设置为与VisibleProperty互斥. 这样, 一个绑定VisibleProperty, 另一个绑定VisibleProperty2~ 省事~


bool VisibleProperty2
{
set
{
this._visibleProperty2 = value;
this._vilibleProperty = !value;
}
get{}
}
bool VisibleProperty
{
set
{
this._visibleProperty = value;
this._vilibleProperty2 = !value;
}
get{}
}

<!-- 前端~ -->
<UserControl Name="太阳" Visibility="{Binding VisibleProperty}" />
<UserControl Name="月亮" Visibility="{Binding VisibleProperty2}" />


2. WPF数值转换器


public class VisibleConverter : IValueConverter
{
public object Convert(object value, Type targettype, object obj, System.Globalization.CultureInfo info)
{
if (targettype != typeof(bool)) { return null; }
return !(bool.Parse(value.ToString()));
}
//这个函数暂时没多大用处, override之后这么写就行了.
public object ConvertBack(object value, Type targettype, object obj, System.Globalization.CultureInfo info)
{
throw new NotImplementedException();
//return value;
}
}

<!-- 前端 -->
<!-- Part A: -->
<Window
xmlns:local ="clr-namespace:命名空间" <!-- 这一行是定义Windows.Resoures的local标签. -->
/>

<!-- Part B: -->
<Window.Resources>
<local:VisibleConverter x:Key="visibleConverter"></local:VisibleConverter >
</Window.Resources>

<!-- Part C: -->
<UserControl Name="月亮" Visibility="{Bind Path=VisibleProperty, Converter={Static Resource visibleConverter}}" />


P.S.
代码随手写的, 没调试,没编译, 理论上可行~ 可以参考一下~
不排除有更好的方法~

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧