相关疑难解决方法(0)

d:具有接口类型的DesignInstance

我将UI绑定到接口(由几个演示者实现,无法从UI程序集访问).

我非常喜欢设计师中的D:DesignInstance,因为它(有点)使用R#强力键入xaml.

遗憾的是,d:DesignInstance不支持接口类型:"无法创建接口实例."

界面上的设计实例

我想到的第一件事是:好的,没问题,让我们创建一个自定义标记扩展,它将System.Type作为参数,以及哪个ProvideValue方法返回它的假实例(此接口的虚拟实现,由动态IL发射生成) .

这很好用,绑定在设计时解决(我可以在设计面板中看到,因为我的标记扩展用lorem-ipsum填充了对象属性)

最好的R#功能不起作用:Resharper无法识别datacontext类型,只是在"object"类型的数据上下文中给出了"无法解析属性'{0}"的消息

自定义标记扩展

有人知道如何解决这个问题吗?

(允许我让R#了解接口datacontext类型的任何替代方案都会很棒)

谢谢 !

ps:我还尝试创建另一个标记扩展,它返回生成的运行时类型,以便将其提供给DesignInstance:"{d:DesignInstance Type = {utilsUi:InstanceType commons:User}}"=>给出错误"对象的类型"InstanceType"无法转换为"System.Type"类型"......似乎DesignInstance不支持内部标记扩展:(

c# wpf resharper xaml

26
推荐指数
3
解决办法
5282
查看次数

在样式列表框ItemContainer上指定datacontext类型

ListBox我有一个ItemContainer的IsSelected属性绑定到我的ViewModel的IsSelected属性使用<ListBox.ItemContainerStyle>语法.

它工作正常,但我得到一个Resharper警告:

无法在"FooSolution.BarViewModel"类型的数据上下文中解析属性"IsSelected".

如何在ListBox ItemContainer上指定指定DataContext类型以消除此警告?

这是代码.我有一BarViewModel节课:

public ObservableCollection<FooViewModel> FooItems { get;set; }
Run Code Online (Sandbox Code Playgroud)

BarViewModel 被分配给Control中包含ListBox的DataContext

并且FooViewModel,如下所示:

public bool IsSelected
{
    get
    {
        return isSelected;
    }

    set
    {
        if (isSelected == value)
        {
            return;
        }

        isSelected = value;
        RaisePropertyChanged(() => IsSelected);
    }
}
Run Code Online (Sandbox Code Playgroud)

和XAML这样:

<ListBox ItemsSource="{Binding FooItems}" SelectionMode="Multiple">        
    <ListBox.ItemContainerStyle>
        <Style TargetType="{x:Type ListBoxItem}">
            <Setter Property="IsSelected" Value="{Binding IsSelected}" />
        </Style>
    </ListBox.ItemContainerStyle>
</ListBox>
Run Code Online (Sandbox Code Playgroud)

更新 我尝试d:DataContext使用setC进行设置,正如HighCore所建议的那样,但不幸的是,它没有帮助,甚至打破了构建:

<Setter Property="d:DataContext" Value="{d:DesignInstance yourxmlns:yourItemViewModelClass}"/>
Run Code Online (Sandbox Code Playgroud)

(抛出:错误1标签'DesignInstance'在XML命名空间'schemas.microsoft.com/expression/blend/2008'中不存在;;第31行位置50.)

更新2 …

c# silverlight wpf xaml binding

13
推荐指数
2
解决办法
8671
查看次数

标签 统计

c# ×2

wpf ×2

xaml ×2

binding ×1

resharper ×1

silverlight ×1