小编lew*_*ewi的帖子

使用资源作为转换会导致绑定转换器

当我尝试将valueconverter从定义的枚举状态绑定到画笔时,我的XAML设计器中出现错误:

找不到'OKStatus'资源.

该应用程序运行良好的运行时,但我无法在设计器中看到我的GUI.我的资源在color.xaml文件中定义,该文件在运行时读取.所有代码都在同一名称空间内

我的XAML:

的xmlns:配置= "CLR的命名空间:App.MyNamespace"

<UserControl.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="c:\Skins\Colors.xaml" />
            <ResourceDictionary Source="c:\Skins\Common.xaml" />                
        </ResourceDictionary.MergedDictionaries>
        <config:StatusConverter x:Key="StateConverter" />
        <config:BoolConverter x:Key="BoolConverter" />
        <config:BooleanConverter x:Key="BooleanConverter" />
    </ResourceDictionary>
</UserControl.Resources>
Run Code Online (Sandbox Code Playgroud)

状态

我的转换器:

[ValueConversion(typeof(bool), typeof(Brush))]
public class BoolConverter : IValueConverter
{
    public object Convert(object value, Type targetType,
        object parameter, CultureInfo culture)
    {
        bool state = (bool)value;

        FrameworkElement FrameElem = new FrameworkElement();

        if (state == true)
            return (FrameElem.FindResource("OKStatus") as Brush);
        else
            return (FrameElem.FindResource("ErrorStatus") as Brush);
    }

    public object ConvertBack(object value, Type targetType,
        object parameter, …
Run Code Online (Sandbox Code Playgroud)

wpf valueconverter staticresource

11
推荐指数
3
解决办法
1万
查看次数

从转换器返回动态资源

我想根据bool的状态更改WPF控件的颜色,在这种情况下是复选框的状态.只要我使用StaticResources,这个工作正常:

我的控制

<TextBox Name="WarnStatusBox" TextWrapping="Wrap" Style="{DynamicResource StatusTextBox}" Width="72" Height="50" Background="{Binding ElementName=WarnStatusSource, Path=IsChecked, Converter={StaticResource BoolToWarningConverter}, ConverterParameter={RelativeSource self}}">Status</TextBox>
Run Code Online (Sandbox Code Playgroud)

我的转换器:

[ValueConversion(typeof(bool), typeof(Brush))]

public class BoolToWarningConverter : IValueConverter
{
    public FrameworkElement FrameElem = new FrameworkElement();

    public object Convert(object value, Type targetType,
        object parameter, CultureInfo culture)
    {                      
        bool state = (bool)value;
        try
        {              
            if (state == true)
                return (FrameElem.TryFindResource("WarningColor") as Brush);
            else
                return (Brushes.Transparent);
        }

        catch (ResourceReferenceKeyNotFoundException)
        {
            return new SolidColorBrush(Colors.LightGray);
        }
    }

    public object ConvertBack(object value, Type targetType,
        object parameter, CultureInfo culture)
    {
        return …
Run Code Online (Sandbox Code Playgroud)

wpf ivalueconverter dynamicresource

6
推荐指数
1
解决办法
5422
查看次数

我可以捕获WPF中可观察结构的成员的更新吗?

我有一个在COM库中定义的结构.在我的ViewModel中,我创建了一个可观察的实例,并希望将结构的每个成员绑定到视图中的不同控件.ConfigStaticDataDetails变量通过COM中的委托进行更新.

有没有办法捕获结构成员的更新,以便我的视图反映更新?

结构的一部分:

public struct ConfigStaticData
{
    public string Callsign;
}
Run Code Online (Sandbox Code Playgroud)

我的:变量:

private ConfigStaticData _ConfigStaticDataDetails;
public ConfigStaticData ConfigStaticDataDetails
{
    get
    {
        return _ConfigStaticDataDetails;
    }
    set
    {
        _ConfigStaticDataDetails = value;
        OnPropertyChanged("ConfigStaticDataDetails");
    }
}
Run Code Online (Sandbox Code Playgroud)

在XAML中:

<TextBox Name="ConfigStaticDataCallsignLabelTxt"
         Margin="0,2,0,2"
         Width="230"
         Style="{DynamicResource EditableTextBox}"
         Text="{Binding Source=ConfigStaticDataDetails, Path=Callsign}" />
Run Code Online (Sandbox Code Playgroud)

我尝试了不同的方法,但这是我当前的代码(不起作用).

c# wpf binding observable

5
推荐指数
1
解决办法
265
查看次数