C# 如何从代码隐藏更改VisualBrush中使用的StaticResource以响应正确的用户输入?

C# 如何从代码隐藏更改VisualBrush中使用的StaticResource以响应正确的用户输入?,c#,.net,wpf,xaml,code-behind,C#,.net,Wpf,Xaml,Code Behind,我有一个矩形,填充设置为随附图标集中的图标 这是密码 <Rectangle x:Name="urlIcon" HorizontalAlignment="Left" Height="26" Margin="448,48,0,0" VerticalAlignment="Top" Width="28"> <Rectangle.Fill> <VisualBrush Visual="{StaticResource appbar_warning}" /&g

我有一个矩形,填充设置为随附图标集中的图标

这是密码

<Rectangle x:Name="urlIcon" HorizontalAlignment="Left" Height="26" Margin="448,48,0,0" VerticalAlignment="Top" Width="28">
    <Rectangle.Fill>
       <VisualBrush Visual="{StaticResource appbar_warning}" />
    </Rectangle.Fill>
</Rectangle>

由于我在WPF的学习曲线上,我不确定语法。 但是你可以试试这样的

urlIcon.Fill(new VisualBrush(...))

这可能会帮助您或给您一个想法

因为我正在学习WPF,我不确定语法。 但是你可以试试这样的

urlIcon.Fill(new VisualBrush(...))

这可能会对您有所帮助或给您一个想法

您可以访问资源来填充矩形,如下所示

urlIcon.Fill = new VisualBrush() { Visual = (Visual)Resources["appbar_check"] };

此外,由于您的资源是UIElements,因此为了在多个位置使用它们,您需要在画布资源上设置
,以便在每次请求时返回新资源。否则,它将给出一个错误,即该视觉对象已经是某个其他控件的子控件。

您可以访问资源以填充矩形,如下所示

urlIcon.Fill = new VisualBrush() { Visual = (Visual)Resources["appbar_check"] };


此外,由于您的资源是UIElements,因此为了在多个位置使用它们,您需要在画布资源上设置
,以便在每次请求时返回新资源。否则,它将给出一个错误,即visual已经是某个其他控件的子控件。

对于这种用途,您最好使用DynamicSource。

对于这种用途,您最好使用DynamicSource。

查看[此][1]堆栈溢出问题。看来是你的问题。[1] :@VibhoreTanwer-我看了看,但它看起来更复杂,与我需要的不同。但下面的答案是可行的。请看[这个][1]堆栈溢出问题。看来是你的问题。[1] :@VibhoreTanwer-我看了看,但它看起来更复杂,与我需要的不同。但是下面的答案是有效的。哈哈,我对C#/WPF也是完全陌生的,因此这是一个简单的问题,但这让我朝着正确的方向前进。哈哈,我对C#/WPF也是完全陌生的,因此,这是一个如此简单的问题,但这让我朝着正确的方向前进。这是第一次工作,但在事件第二次触发时删除图标,并且这一行是第二次执行。那里只有空白。有什么想法吗?你能检查一下VisualBrush的VisualProperty是否在第二次执行时设置好了吗?我不太确定我是否知道如何检查,因为我对它相当陌生,但我在第二次执行上面的解决方案后,在第二行停止了调试器,并导航到urlIcon->Fill->Visual,我复制了该行,它是“Visual”{System.Windows.Controls.Canvas}System.Windows.Media.Visual{System.Windows.Controls.Canvas}”你能为appbar_check共享xaml吗?这是第一次工作,但当事件再次触发时会删除图标,并且这一行将再次执行。那里只有空白。有什么想法吗?你能检查Visual brush的视觉属性是否设置为第二次执行吗?我不太确定我是否知道如何检查,因为我是一个新手但在第二次执行上面的解决方案后,我在第二行停止了调试器,并导航到urlIcon->Fill->Visual,然后复制了行,它是“Visual{System.Windows.Controls.Canvas}System.Windows.Media.Visual{System.Windows.Controls.Canvas}”你能为appbar#u check共享xaml吗?你能再解释一下吗?既然软件包列出了语法,并且它使用了StaticResource,我该如何使用它?你的意思是你不能从StaticResource中更改它?idk,我对C#不熟悉。但是在页面上,它的说明是“StaticResource”-。称之为DynamicSource有效吗?你能再解释一下吗?既然软件包列出了语法,并且使用了StaticResource,我该如何使用它?你的意思是你不能从StaticResource更改它吗?idk,我对C#不熟悉。但是在页面上,它的说明说“StaticResource”-。称之为DynamicSource有效吗?