如果图像(来自动态资源)不可用,则按钮默认内容
Button default content if image (from dynamic resource) is not available
在用户控件中,我希望按钮显示图像(由动态资源提供)。如果动态资源不可用/应用程序不提供,我希望按钮显示一些默认内容。
我的想法是将默认内容放入位于图像下方的文本块中,并在图像源为 null 时将其隐藏(因此它不会透出)。但是如果解析 DynamicResource 失败,这种情况似乎不起作用。在这种情况下,图像来源的状态究竟是什么?
<Button Command="{Binding DoSomethingCommand}">
<Grid>
<TextBlock Text="DefaultText" Visibility="Collapsed">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=TestImage, Path=Source}" Value="{x:Null}">
<Setter Property="Visibility" Value="Visible"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
<Image x:Name="TestImage" Source="{DynamicResource SomeResource}" Stretch="None"/>
</Grid>
</Button>
什么是合适的解决方案?
感谢您的帮助!
试试这个:
<Button Command="{Binding DoSomethingCommand}">
<Grid>
<TextBlock Text="DefaultText" />
<Image x:Name="TestImage" Source="{DynamicResource SomeResource}" Stretch="None"/>
</Grid>
</Button>
只有在资源查找成功时,TextBlock才会被Image隐藏。
The problem with this is, that the default content shines through if the image is showing and it does not cover the entire default content
那这个呢?
<Button Command="{Binding DoSomethingCommand}">
<Grid>
<Image x:Name="TestImage" Source="{DynamicResource SomeResource}" Stretch="None"/>
<TextBlock Text="DefaultText">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Visibility" Value="Collapsed" />
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Source, ElementName=TestImage}" Value="{x:Null}">
<Setter Property="Visibility" Value="Visible" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</Grid>
</Button>
在用户控件中,我希望按钮显示图像(由动态资源提供)。如果动态资源不可用/应用程序不提供,我希望按钮显示一些默认内容。
我的想法是将默认内容放入位于图像下方的文本块中,并在图像源为 null 时将其隐藏(因此它不会透出)。但是如果解析 DynamicResource 失败,这种情况似乎不起作用。在这种情况下,图像来源的状态究竟是什么?
<Button Command="{Binding DoSomethingCommand}">
<Grid>
<TextBlock Text="DefaultText" Visibility="Collapsed">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=TestImage, Path=Source}" Value="{x:Null}">
<Setter Property="Visibility" Value="Visible"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
<Image x:Name="TestImage" Source="{DynamicResource SomeResource}" Stretch="None"/>
</Grid>
</Button>
什么是合适的解决方案?
感谢您的帮助!
试试这个:
<Button Command="{Binding DoSomethingCommand}">
<Grid>
<TextBlock Text="DefaultText" />
<Image x:Name="TestImage" Source="{DynamicResource SomeResource}" Stretch="None"/>
</Grid>
</Button>
只有在资源查找成功时,TextBlock才会被Image隐藏。
The problem with this is, that the default content shines through if the image is showing and it does not cover the entire default content
那这个呢?
<Button Command="{Binding DoSomethingCommand}">
<Grid>
<Image x:Name="TestImage" Source="{DynamicResource SomeResource}" Stretch="None"/>
<TextBlock Text="DefaultText">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Visibility" Value="Collapsed" />
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Source, ElementName=TestImage}" Value="{x:Null}">
<Setter Property="Visibility" Value="Visible" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</Grid>
</Button>