0

次のクラスにバインドされた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>

ログはハイパーリンク列です。リンクをクリックすると、新しいウィンドウにログファイルの内容が表示されます。

Output.Logが空の場合、ログリンクを非表示にすることはできますか?

4

2 に答える 2

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");
        }
    }
于 2013-01-08T15:10:33.763 に答える
0

TargetNullValueを列Bindingに追加してみてください。

 <DataGridHyperlinkColumn Header="Log" 
    ContentBinding="{Binding Source={StaticResource viewdetails}, TargetNullValue={x:Static sys:String.Empty}}">
于 2013-01-07T18:16:45.087 に答える