WPF条件数据绑定

时间:2013-01-07 16:49:29

标签: wpf datagrid

我有一个绑定到以下类的WPF网格:

public class Output{
    public string TaskName { get; private set; }
    public string Log { get; set; }
}

网格:

<DataGrid AutoGenerateColumns="False">
    <DataGrid.Resources>
        <sys:String x:Key="viewdetails">view...</sys:String>
    </DataGrid.Resources>
    <DataGrid.Columns>
        <DataGridTextColumn Header="Task" Binding="{Binding TaskName}" />
        <DataGridHyperlinkColumn Header="Log" 
    ContentBinding="{Binding Source={StaticResource viewdetails}}" >
            <DataGridHyperlinkColumn.ElementStyle>
                <Style TargetType="TextBlock">
                    <EventSetter Event="Hyperlink.Click" Handler="ViewLogClick" />
                </Style>
            </DataGridHyperlinkColumn.ElementStyle>
        </DataGridHyperlinkColumn>
    </DataGrid.Columns>
</DataGrid>

Log是一个超链接列,点击链接后会在新窗口中显示日志文件的内容。

如果Output.Log为空,是否可以隐藏日志链接?

2 个答案:

答案 0 :(得分:0)

尝试将TargetNullValue添加到您的列Binding。

 <DataGridHyperlinkColumn Header="Log" 
    ContentBinding="{Binding Source={StaticResource viewdetails}, TargetNullValue={x:Static sys:String.Empty}}">

答案 1 :(得分:0)

感谢您的回复。

我创建了一个新属性,并将超链接列绑定到LogLink作为解决方法:

private string _log;
public string Log
    {
        get { return _log; }
        set 
        { 
            _log = value;
            if (!String.IsNullOrEmpty(value))
            {
                LogLink = "view...";
            }
        }
    }
    private string _logLink;
    public string LogLink
    {
        get
        {
            return _logLink;
        }
        set
        {
            _logLink = value;
            FirePropertyChangedEvent("LogLink");
        }
    }