如果 Url 不为空,我希望能够显示超链接,否则我不希望显示链接。
我该怎么办?到目前为止,这是我的代码。我的列表框模板示例:
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Background="#CD85C9E9"
Name="spListItem"
Orientation="Horizontal"
HorizontalAlignment="Stretch">
<Label>
<TextBlock Text="{Binding Name}" />
<!-- How to define if Url Is Null -->
<Hyperlink Name="MyLink" Click="MyLink_Click" />
</Label>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
我的类(class):
public class MyList
{
public string Name{get;set;}
public string? Url{get;set;}
}
最佳答案
两种选择:
编写自定义值转换器以根据对象(在本例中为您的 Url)是否为 null 将其转换为 Visibility,并将其设置在 Visibility 属性上:
使用 DataTrigger 将可见性设置为 false。
<Hyperlink Name="MyLink" Click="MyLink_Click"> <Hyperlink.Style> <Style TargetType="Hyperlink"> <Style.Triggers> <DataTrigger Binding="{Binding Url}" Value="{x:Null}"> <Setter Property="Visibility" Value="Collapsed"/> </DataTrigger> </Style.Triggers> </Style> </Hyperlink.Style> </Hyperlink>
第二个更冗长,但可以完全在 xaml 中完成。但是,在第一种情况下,您最终将不止一次使用自定义转换器。
顺便说一句
public string? Url{get;set;}
String
是一个引用类型,因此已经可以为 null。
关于c# - Wpf如何根据变量动态渲染按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7914270/