为什么我不能得到任何燃烧的转换器?
我有单选按钮,我想定义的单选按钮器isChecked状态和一些StackPanel的,所以我写了这个转换方法的可见性之间的绑定:为什么我不能得到任何燃烧的转换器?
public class RadioBtnState2Visible : IValueConverter
{
// RadioBtn start => Visible/Hide
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if(value == null)
return Visibility.Collapsed;
bool visibility = false;
bool.TryParse(value.ToString(), out visibility);
return visibility ? Visibility.Visible : Visibility.Collapsed;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
//return ((Visibility)value) == Visibility.Visible ? true : false;
}
}
的XAML是
<local:PageEx.Resources>
<local:RadioBtnState2Visible x:Key="Convert" />
</local:PageEx.Resources>
<RadioButton x:Name="MyRadioBtn1" GroupName="group1" />
<RadioButton x:Name="MyRadioBtn2" GroupName="group1" />
<StackPanel Visibility="{Binding ElementName=MyRadioBtn1, Path=IsChecked, Converter={StaticResource Convert}}" />
现在,我没有看到任何转换火 - 我没有看到应用程序停止在转换方法的第一行上设置的断点。
这是上一个问题的复本,已经回答了。这里是答案:
我得到了你的代码在一个测试项目中的工作与一个小的变化。我做了转换器的语法如下页面资源:
<UserControl.Resources>
<local:RadioBtnState2Visible x:Key="Convert" />
</UserControl.Resources>
我还要提到的是,我不得不居然把东西在StackPanel中也看到了变化默认情况下它缩短到什么:)我承担你真的在你的真正的堆栈面板上有内容。
只是为了解释这里发生了什么。通过将“local:”添加到资源声明中,您实际上将一个资源的实例包含在内,而不会更改当前资源。通过“转换”引用它不起作用,因为它无法找到它希望找到它的资源。
FYI有BooleanToVisibilityConverter转换器已经提供:
<Window.Resources>
<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter1" />
</Window.Resources>
不是在Silverlight中不存在 – AnthonyWJones 2011-06-16 07:50:52
Ha我看到了,感谢提醒。 – 2011-06-16 08:10:05
你看到在输出窗口任何约束力的错误,当你在调试运行呢? – 2011-06-16 07:30:35
不,没有绑定错误。 – Yanshof 2011-06-16 07:31:44
对不起,-1。这是一个诚实的错误 – Yanshof 2011-06-16 08:13:22