c# - 绑定(bind)失败如何指定默认值?

标签 c# wpf xaml

我有一个 DrawingBrush 如下:-

<DrawingBrush x:Key="MY_ICON" Viewbox="0,0,39.125,39.125" ViewboxUnits="Absolute">
    <DrawingBrush.Drawing>
        <GeometryDrawing Brush="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=uiEntityViews:BaseView}, Path=Color}" Geometry="F1M19.5625,0.999954C29.8144,0.999954 38.125,9.31053 38.125,19.5625 38.125,29.8142 29.8143,38.1249 19.5625,38.1249 9.31073,38.1249 1,29.8142 1,19.5625 1,9.31053 9.31064,0.999954 19.5625,0.999954z">
            <GeometryDrawing.Pen>
                <Pen DashCap="Square" EndLineCap="Flat" LineJoin="Round" MiterLimit="10" StartLineCap="Flat" Thickness="2">
                    <Pen.Brush>
                        <LinearGradientBrush EndPoint="0.849422,0.849423" StartPoint="0.150577,0.150578">
                            <GradientStop Color="#FF657783" Offset="0"/>
                            <GradientStop Color="White" Offset="0.146"/>
                            <GradientStop Color="#FF2C4758" Offset="1"/>
                        </LinearGradientBrush>
                    </Pen.Brush>
                    <Pen.DashStyle>
                        <DashStyle/>
                    </Pen.DashStyle>
                </Pen>
            </GeometryDrawing.Pen>
        </GeometryDrawing>
    </DrawingBrush.Drawing>
</DrawingBrush>

我在样式中使用了上面的画笔,如下所示:-

<Style x:Key="NODE_ICON" TargetType="Rectangle">
<Setter Property="Fill">
  <Setter.Value>
    <DrawingBrush TileMode="None">
      <DrawingBrush.Drawing>
        <DrawingGroup>
          <GeometryDrawing Brush="{StaticResource MY_ICON}">
            <GeometryDrawing.Geometry>
              <RectangleGeometry Rect="0,0,1,1" />
            </GeometryDrawing.Geometry>
          </GeometryDrawing>

          <DrawingGroup>
            <DrawingGroup.Transform>
              <TranslateTransform X="0.2" Y="0.2" />
            </DrawingGroup.Transform>
            <GeometryDrawing Brush="{StaticResource NODE_ICON}">
              <GeometryDrawing.Geometry>
                <RectangleGeometry Rect="0,0,1,1" />
              </GeometryDrawing.Geometry>
            </GeometryDrawing>
          </DrawingGroup>
        </DrawingGroup>
      </DrawingBrush.Drawing>
    </DrawingBrush>
  </Setter.Value>
</Setter>

现在,我收到此错误 - System.Windows.Data Error: 4 : Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='Views.UIEntityViews.BaseView', AncestorLevel='1''. BindingExpression:Path=Color; DataItem=null; target element is 'GeometryDrawing' (HashCode=3377278); target property is 'Brush' (type 'Brush') .

似乎绑定(bind)不起作用。有没有办法指定颜色的默认值,比方说 <GeometryDrawing Brush="{StaticResource ROADM_ICON, color=Gray}">如果绑定(bind)失败?

最佳答案

使用 FallbackValue .....<GeometryDrawing Brush="{StaticResource NODE_ICON, FallbackValue=Gray}">

关于c# - 绑定(bind)失败如何指定默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36296723/

相关文章:

c# - Func<T> 的 Invoke 属性是什么?

c# - 不在焦点时将键盘输入发送到 Spotify

c# - 通过C#方法编写HTML和JQuery

c# - 从另一个应用程序控制 WPF 应用程序

c# - 创建动态 WPF 上下文菜单

c# - Wpf 如何将 xaml.cs 窗口逻辑分离到单独的类中

c# - 如何在 ASP.NET 中创建带有节和标题的表?

c# - 调试 Visual Studio 设计器

使用路径作为附加属性的 WPF 自定义形状按钮模板

c# - 如何在 GridViewColumn 中将值显示为图像?