- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 RibbonComboBox
用于设置字体大小。它有一个 RibbonGallery
列出各种字体大小,显示在适当的 FontSize
中:
<r:RibbonComboBox DataContext="{x:Static vm:RibbonDataModel.FontSizeComboBoxData}"
SelectionBoxWidth="30">
<r:RibbonGallery MaxColumnCount="1"
Command="{Binding Command}"
CommandParameter="{Binding SelectedItem}">
<r:RibbonGallery.GalleryItemTemplate>
<DataTemplate>
<Grid>
<TextBlock Text="{Binding}"
FontSize="{Binding}" />
</Grid>
</DataTemplate>
</r:RibbonGallery.GalleryItemTemplate>
</r:RibbonGallery>
</r:RibbonComboBox>
public static RibbonDataModel
{
public static GalleryData<object> FontSizeComboBoxData
{
get
{
lock (LockObject)
{
const string key = "Font Size";
if (!DataCollection.ContainsKey(key))
{
var value = new GalleryData<object>
{
Command = HtmlDocumentCommands.ChangeFontSize,
Label = "Change Font Size",
ToolTipDescription = "Set the font to a specific size.",
ToolTipTitle = "Change Font Size",
};
var fontSizes = new GalleryCategoryData<object>();
var i = 9.0;
while (i <= 30)
{
fontSizes.GalleryItemDataCollection.Add(i);
i += 0.75;
}
value.CategoryDataCollection.Add(fontSizes);
DataCollection[key] = value;
}
return DataCollection[key] as GalleryData<object>;
}
}
}
}
RibbonComboBox
中。具有相同的巨大(或微小)
FontSize
因为它在画廊中使用。
FontSize
所选项目在
RibbonComboBox
中显示时的默认值?
最佳答案
RibbonComboBox
使用 ContentPresenter
显示您在 RibbonGallery
中选择的项目.
此外ContentPresenter
采用相同ItemTemplate
您在 RibbonGallery
中声明的.
这是您问题的“核心”原因。
因此,您可以在两种解决方案之间进行选择来解决该问题。
第一个解决方案(最快的)
您可以简单地设置 IsEditable
您的 RibbonComboBox 的属性为“true”。通过这种方式,RibbonComboBox 将 ContentPresenter 替换为 TextBox,而不使用任何 ItemTemplate。然后字体将具有正确的大小。
第二个解决方案(恕我直言最好的一个)
由于 ItemTemplate 在 RibbonComboBox 的 ContentPresenter 和 RibbonGallery 中同时使用,因此我们可以尝试解决问题。最大的区别在于,当 DataTemplate 放置在 RibbonGallery 中时,其父项是 RibbonGalleryItem
.
所以如果它的父节点不是 RibbonGalleryItem
,您会自动知道 DataTemplate 放置在 ContentPresenter 中。
您可以通过编写一个简单的 DataTrigger
来处理这种情况。 .
让我们看看代码中的所有内容。
我写了一个简化的 ViewModel:
namespace WpfApplication1
{
public class FontSizes
{
private static FontSizes instance = new FontSizes();
private List<double> values = new List<double>();
public FontSizes()
{
double i = 9.0;
while (i <= 30)
{
values.Add(i);
i += 0.75;
}
}
public IList<double> Values
{
get
{
return values;
}
}
public static FontSizes Instance
{
get
{
return instance;
}
}
}
}
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:ribbon="http://schemas.microsoft.com/winfx/2006/xaml/presentation/ribbon"
xmlns:vm="clr-namespace:WpfApplication1"
Title="Window1" Height="300" Width="300">
<Window.Resources />
<DockPanel>
<ribbon:RibbonComboBox Label="Select a font size:"
SelectionBoxWidth="62"
VerticalAlignment="Center">
<ribbon:RibbonGallery MaxColumnCount="1">
<ribbon:RibbonGalleryCategory DataContext="{x:Static vm:FontSizes.Instance}" ItemsSource="{Binding Path=Values, Mode=OneWay}">
<ribbon:RibbonGalleryCategory.ItemTemplate>
<DataTemplate>
<Grid>
<TextBlock Name="tb" Text="{Binding}" FontSize="{Binding}" />
</Grid>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ribbon:RibbonGalleryItem, AncestorLevel=1}}"
Value="{x:Null}">
<Setter TargetName="tb" Property="FontSize" Value="12" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</ribbon:RibbonGalleryCategory.ItemTemplate>
</ribbon:RibbonGalleryCategory>
</ribbon:RibbonGallery>
</ribbon:RibbonComboBox>
</DockPanel>
</Window>
关于WPF::与 RibbonGallery 不同的 RibbonComboBox 样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29721291/
使用 WPF MVVM 风格。尝试使用可点击的项目创建 RibbonGallery由于某种原因,我无法获得启动我的委托(delegate)命令的项目 XAML 代码:
我有一个 RibbonComboBox用于设置字体大小。它有一个 RibbonGallery列出各种字体大小,显示在适当的 FontSize 中:
我正在 WPF 中使用 RibbonController 创建一个应用程序。 在我安装 .net 4.6 之前它工作正常。然后我的“RibbonGallery”处于禁用状态(观点下拉菜单)。我也尝试通
我需要一些帮助来理解 Lester's Blog: Using RibbonGallery Control 发布的示例.我对 WPF 比较陌生,对 MVVM 不是很熟悉 我不太明白示例中的功能区库是如
我是一名优秀的程序员,十分优秀!