1

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

3 回答 3

3

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

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

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

于 2013-09-16T05:16:32.637 回答
1

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

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

可以帮助你或给你一个想法

于 2013-09-16T05:06:00.973 回答
0

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

于 2013-09-16T09:39:24.080 回答