我必须在我们的应用程序中单击一个按钮后创建一个分隔符控件。 样式应该来自资源字典。
它是这样的:
var separator = new Separator();
try
{
separator.Style = (Style)TryFindResource("columnseperatorStyle");
}
catch
{
}
问题在于它无法在运行时中呈现,我已经检查了属性,并将样式应用于分隔符。
有人可以照亮吗?
*其他信息
这就是我定义位于单独资源字典中的样式的方式。
<Style x:Key="columnseperatorStyle" TargetType="{x:Type Separator}">
<Setter Property="Width"
Value="2" />
<Setter Property="HorizontalAlignment"
Value="Left" />
<Setter Property="Background"
Value="Red" />
</Style>
我发现检索样式没有问题。我的临时解决方案是在对象的单独实例中检索样式。见下文
separator = new Separator();
separator.Style = (Style)TryFindResource("columnseperatorStyle");
/*Applying styles to the separator object like below:
var separator = new Separator()
{
Style = (Style)TryFindResource("columnseperatorStyle");
}
Does not render the style in the runtime, i don't know why?.
*/
separator = new Separator()
{
Name = colName,
Background = separator.Background,
Width = separator.Width,
HorizontalAlignment = separator.HorizontalAlignment
};
grdData.Children.Add(separator);
我想知道为什么使用直接分配样式不能在运行时呈现样式:
separator.Style = (Style)TryFindResource("columnseperatorStyle");
*新更新
我最终使用了线路控制。 :))带有分隔符控件的东西..它不能直接应用样式。
if (line == null)
{
line = new Line()
{
Name = colName,
Style = (Style)TryFindResource("columnLineStyle")
};
var relativePoint = btn.TransformToAncestor(grdData).Transform(new Point(0, 0));
line.Margin = new Thickness(relativePoint.X + 3, 0, 0, 0);
grdData.Children.Add(line);
}
else
{
grdData.Children.Remove(line);
}