绑定

时间:2016-06-30 19:34:01

标签: c# wpf mvvm

我创建了一个Recent Files菜单项,我绑定了一组最近的文件视图模型。

<MenuItem Header="_Recent Files" ItemsSource="{Binding RecentFiles}" Command="{x:Static pm:MainWindow.RecentFileListCommand}">
    <MenuItem.ItemContainerStyle>
        <Style>
            <Setter Property="MenuItem.Header" Value="{Binding}"/>
            <Setter Property="MenuItem.Command" Value="{x:Static pm:MainWindow.RecentFileOpenCommand}"/>
            <Setter Property="MenuItem.CommandParameter" Value="{Binding FilePath}"/>
        </Style>
    </MenuItem.ItemContainerStyle>
</MenuItem>

我希望列表编号,我希望这些数字用作快捷方式(确切地说是Visual Studio的工作方式)。我的视图模型有一个Number字段和Name字段。我重写ToString()方法以返回包含下划线的标题:

return string.Format("_{0} {1}", Number, FilePath);

但是,绑定时,下划线被视为文字并显示为标题文本(不是快捷方式)的一部分。我也试过没有运气使用HeaderStringFormat:我怎样才能让WPF看到下划线作为快捷方式而不是文字字符串?

1 个答案:

答案 0 :(得分:1)

可以尝试返回AccessText,但可能会破坏关注点。

Matthew Whited所述,更简洁的方法是仅返回字符串并使用转换器将其转换为AccessText。或者使用HeaderTemplate并在那里创建它。