如何从代码隐藏更改可视化画笔中使用的静态资源,以响应正确的用户输入

本文关键字:资源 静态 响应 输入 用户 隐藏 代码 画笔 可视化 | 更新日期: 2023-09-27 18:31:28

我有一个矩形,填充设置为MahApps.Metro附带的图标集中的图标

这是代码

<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>

在 XAML 设计中,我有一个获取用户输入网址的 URL 框。在后面的代码中,我检查网址是否可访问,如果是,那么我想将静态资源更改为另一个图标"appbar_check"

下面是 URL 框的事件方法。 urlExists 是另一种检查 url 的方法。

private void urlBox_LostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
{
    String url = ((TextBox)sender).Text;
    if (urlExists(url))
    {
        //change icon
     }
 }

如何从代码隐藏更改可视化画笔中使用的静态资源,以响应正确的用户输入

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

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

此外,由于您的资源是 UIElements,因此为了在多个位置使用它们,您需要在画布资源上设置<Canvas x:Shared="false" >,以便每次询问时返回新资源。否则,它将给出一个错误,指出视觉对象已经是某个其他控件的子控件。

由于我正在学习WPF曲线,因此我不确定语法。但是你可以尝试这样的事情。

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

愿这对您有所帮助或给您一个想法

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