小编Mar*_*tin的帖子

错误:此类型的CollectionView不支持对其SourceCollection的更改

我有一个ObservableCollection项,我需要能够更新并使用ICollectionView表示数据.

以下是相关的代码:

private ObservableCollection<Hero> heroesDBHeroes;
public ObservableCollection<Hero> HeroesDBHeroes
{
    get
    {
        return heroesDBHeroes;
    }
    set
    {
        heroesDBHeroes = value;
        OnPropertyChanged("HeroesDBHeroes");
    }
}
private void HeroesDBAddHeroes()
{
    if(HeroesDBHeroes != null)
    {
        HeroesDBHeroes.Clear();
    }
    HeroesDBHeroes = Hero.GetAllHeroes();

    HeroesDBFilteredHeroes = new ListCollectionView(HeroesDBHeroes);
    HeroesDBFilteredHeroes.Filter = new Predicate<object>(HeroesDBFilterHeroes);
    HeroesDBFilteredHeroes.Refresh();
    OnPropertyChanged("HeroesDBFilteredHeroes");
}
Run Code Online (Sandbox Code Playgroud)

这是CollectionView及其过滤器:

    public CollectionView HeroesDBFilteredHeroes { get; set; }
    public bool HeroesDBFilterHeroes(object item)
    {
        Hero h = item as Hero;
        bool ID, Name, GoldMinimum, GoldMaximum, PlatinumMinimum, PlatinumMaximum, DBTag, ReleaseDateStart, ReleaseDateEnd, Available, Sale, Featured, New, F2P, …
Run Code Online (Sandbox Code Playgroud)

c# wpf observablecollection mvvm collectionviewsource

4
推荐指数
1
解决办法
6932
查看次数

WinUI XAML:使用另一个项目中的 ResourceDictionary

在我的 WinUI 3 应用程序中,我尝试使用位于另一个项目中的 ResourceDictionary。

假设引用的项目是ResourceTestLib,该库项目有一个文件夹“Styles”,其中有一个文件“_Thickness.xaml”。

app.xaml主应用程序的文件中,我在“此处的其他合并字典”注释下方尝试了这两种方法,但它们似乎都不起作用,即该应用程序在启动时崩溃,并显示消息“无法找到资源......”消息。

这是我的 app.xaml:

<Application.Resources>
    <ResourceDictionary>

        <ResourceDictionary.MergedDictionaries>
            <XamlControlsResources xmlns="using:Microsoft.UI.Xaml.Controls" />

            <!-- Other merged dictionaries here -->
            <ResourceDictionary Source="/ResourceTestLib;component/Styles/_Thickness.xaml"/>
            <ResourceDictionary Source="pack://application:,,,/ResourceTestLib;component/Styles/_Thickness.xaml"></ResourceDictionary>
        </ResourceDictionary.MergedDictionaries>

    </ResourceDictionary>
</Application.Resources>
Run Code Online (Sandbox Code Playgroud)

当我将鼠标悬停在相应的行上时,Visual Studio 会显示一个工具提示,其中第一个引用的行显示“路径 X 未找到”,第二个引用的行显示ResourceDictionary“路径中的字符无效”(可能是因为“应用程序:,,,”)消息。

我认为 WinUI XAML 在这方面可能与 WPF XAML 不同?或者甚至还不支持这一点?

c# xaml uwp-xaml winui-3 windows-app-sdk

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

WinUI 3.0 桌面:鼠标悬停时文本框的背景颜色发生变化

我已经开始使用 WinUI 3,这是 Microsoft 的新 UI 技术。

我有一个TextBox我想将其设置为只读的,即IsReadOnly="True"(备注:用户仍然可以从中复制内容,这就是为什么我不想将其设置为禁用,即IsEnabled="False"。)

当将其设置为时,IsReadOnly="True"我注意到TextBox仍然保留其默认的白色背景。我想改变这一点,以避免用户因为认为可以更改其内容而点击它。

我决定为背景设置某种灰色:

    <TextBox IsReadOnly="True" Background="SlateGray" Text="The content..."></TextBox>
Run Code Online (Sandbox Code Playgroud)

这按预期工作,但有一个问题:一旦鼠标悬停在背景上,TextBox背景就会变回白色。当鼠标不再位于 上时TextBox,颜色变回指定的灰色背景颜色。

在 WPF 中,我会尝试一些 DataTrigger 以保持格式,但 WinUI 中还没有 DataTrigger(还?)。

我还尝试设置其他与颜色相关的属性,以TextBox查看它们是否与上述行为有关,但设置这些属性并没有改变任何内容:

FocusVisualPrimaryBrush, FocusVisualSecondaryBrush, SelectionHighlightColor, SelectionHighlightColorWhenNotFocused
Run Code Online (Sandbox Code Playgroud)
我愿意接受有关当鼠标悬停在只读“TextBox”上时如何保留背景颜色的各种建议,谢谢。

c# user-interface xaml winui-3

2
推荐指数
1
解决办法
1989
查看次数