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

标签 c# .net wpf xaml code-behind

我有一个矩形,其填充设置为 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"] };

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

关于c# - 如何从代码隐藏更改 VisualBrush 中使用的 StaticResource 以响应正确的用户输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18820659/

相关文章:

c# - IFormFile IEnumerable 的大小为 1,即使指定了多个文件上传

c# - 在 Winform 应用程序中更改组合框的高度

c# - 我应该使用哪个 C# 集合来进行可变和可重复的任务管理?

c# - 改进 ASP.NET 网站的 TTFB

c# - Lock 语句 - 它总是释放锁吗?

c# - 如何在 WPF 中的特定位置添加菜单项?

wpf - WPF 中的自定义依赖属性和双向绑定(bind)

c# - 在 C# 中使用文档属性

.net - WCF 客户端 - 无法为 SSL/TLS 建立安全通道

.net - 将行颜色绑定(bind)到 MVVM 中的属性(取决于行中的数据)