【问题标题】:Custom property in NavigationViewItemNavigationViewItem 中的自定义属性
【发布时间】:2019-10-14 13:07:07
【问题描述】:

我正在 NavigationViewItem 中为通知创建一个新网格。但我不明白如何创建一个 < NavigationViewItem.Notification visible="True" Text="12" > 要使用的属性。

我创建了设计,但文本已分配给所有项目。 我想控制通知的属性(可见和文本)

我该如何管理? 任何帮助将不胜感激!

<Grid Visibility="Visible" CornerRadius="5, 5, 5, 5" HorizontalAlignment="Right" Width="30" Background="#11FFFFFF" Opacity="1" Height="24" Margin="0,0,15,0">
 <TextBlock Text="17" VerticalAlignment="Center" HorizontalAlignment="Center" Margin="0,0,0,1" Foreground="#FFC5C5C5"/>
</Grid>

【问题讨论】:

  • 当然可以。我将代码放在一个文本文件中并使用了 Google Drive,因为这里有一个限制。链接:link

标签: c# xaml uwp navigationview


【解决方案1】:

NavigationViewItem 中的自定义属性

默认的NavigationViewItem 不包含Notification 属性。您可以使用 TempateControl 自定义NavigationViewItem,但这很复杂。使用IValueConverter 处理Visibility 的方法很简单。

    <Grid
        Width="200"
        Height="24"
        Margin="0,0,15,0"
        HorizontalAlignment="Right"
        Background="#11FFFFFF"
        CornerRadius="5, 5, 5, 5"
        Opacity="1"
        Visibility="{Binding MessgeCount, Converter={StaticResource visibilityConverter}}"
        >
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="3*" />
            <ColumnDefinition Width="1*" />
        </Grid.ColumnDefinitions>
        <TextBlock Text="{Binding Name}" />
        <TextBlock
            Grid.Column="1"
            Margin="0,0,0,1"
            HorizontalAlignment="Right"
            VerticalAlignment="Center"
            Foreground="#FFC5C5C5"
            Text="{Binding MessgeCount}"
            />
    </Grid>

可见性转换器

public class VisibilityConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, string language)
    {
        if ((int)value == 0)
        {
            return Visibility.Collapsed;
        }
        else
        {
            return Visibility.Visible;
        }
    }

    public object ConvertBack(object value, Type targetType, object parameter, string language)
    {
        throw new NotImplementedException();
    }
}

模型类

public class Category : CategoryBase
{
    public string Name { get; set; }
    public string Tooltip { get; set; }
    public Symbol Glyph { get; set; }
    public bool IsEnabled { get; set; }
    public int MessgeCount { get; set; }
}

这是您可以refer 的代码示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-15
    • 2011-03-27
    • 2011-01-24
    • 1970-01-01
    • 2011-10-15
    • 2016-09-22
    相关资源
    最近更新 更多