任何建议如何找出错误,找出为什么这个XAML中的Grid.Resources样式在最终结果中没有任何区别?
注意我正在使用WPFToolkit中的图表,因此要调整图表的外观,似乎必须应用样式区域(论坛上有人建议)。
所以我的问题一般来说,注意我正在尝试调整第三方图的外观,我如何调试/故障查找以了解出现了什么问题?有调试技巧吗?例如,当我将BorderThickness增加到30时,我看不出有什么区别。我真正想要的是相当于FireBug for HTML / CSS,它可以帮助您理解/查看CSS应用于哪些元素。
编辑:所以我真的(我认为)希望能够遍历图形的对象树,并参考Grid.Resources区域中的模板更改,看看为什么它们没有出现。
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:chartingToolkit="clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit" mc:Ignorable="d" x:Name="Splash" x:Class="MyInternetUsage.SplashWindow"
Title="SplashWindow" Height="421" Width="570">
<DockPanel>
<StackPanel VerticalAlignment="Top" DockPanel.Dock="Top" Orientation="Horizontal">
<Button Content="Configure" HorizontalAlignment="Left" Margin="0" Width="78" VerticalAlignment="Center" Name="ConfigureButton" Click="ConfigureButton_Click" />
<Button Content="Start" Name="StartButton" Width="78" Click="StartButton_Click" />
<Button Content="Stop" Name="StopButton" Width="78" Click="StopButton_Click" />
</StackPanel>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Label Content="Summary" Grid.Column="0"/>
<GridSplitter HorizontalAlignment="Right"
VerticalAlignment="Stretch" Grid.Column="1" ResizeBehavior="PreviousAndNext"
Width="5" Background="#FFBCBCBC"/>
<Grid Grid.Column="2">
<Grid.Resources>
<Style x:Key="GooglePolylineStyle" TargetType="Polyline">
<Setter Property="StrokeThickness" Value="30"/>
</Style>
<Style x:Key="GoogleLineDataPointStyle" TargetType="chartingToolkit:LineDataPoint">
<Setter Property="Background" Value="#0077CC" />
<Setter Property="BorderBrush" Value="White"/>
<Setter Property="BorderThickness" Value="30"/>
<Setter Property="IsTabStop" Value="False"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="chartingToolkit:LineDataPoint">
<Grid x:Name="Root" Opacity="1">
<ToolTipService.ToolTip>
<StackPanel Margin="2,2,2,2">
<ContentControl Content="{TemplateBinding IndependentValue}"
ContentStringFormat="{}{0:MMMM d, yyyy}"/>
<ContentControl Content="{TemplateBinding DependentValue}"
ContentStringFormat="Visits {0:###,###,###}"/>
</StackPanel>
</ToolTipService.ToolTip>
<Ellipse StrokeThickness="{TemplateBinding BorderThickness}"
Stroke="{TemplateBinding BorderBrush}"
Fill="{TemplateBinding Background}"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Grid.Resources>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition />
</Grid.RowDefinitions>
<Label Content="Real Time Graph" VerticalAlignment="Top" Grid.Row="0" />
<chartingToolkit:Chart Grid.Row="1"
Name="RTGraph"
BorderThickness="0" >
</chartingToolkit:Chart>
</Grid>
</Grid>
</DockPanel>
</Window>
答案 0 :(得分:3)
正如SeeSharp所说,Snoop允许您在运行时查看对象树(并更改值并查看结果等)。但是,我认为您的问题可能是您没有在<chartingToolkit:Chart />
对象上明确应用该样式。
尝试以下方法之一,看看它是否有所作为:
在对象上应用样式:
<chartingToolkit:Chart
...
Style="{DynamicResource GoogleLineDataPointStyle}"
...
>
或者从样式中删除键,使其只具有TargetType属性(应该使其成为该类型所有对象的默认样式:
<Style TargetType="chartingToolkit:LineDataPoint">
...
</Style>
答案 1 :(得分:2)
请参阅VS中的输出窗口。此窗口中记录的所有绑定错误。此外,tool Snoop还可以看到绑定错误。
答案 2 :(得分:2)
因为你给了样式x:Key
。您需要显式设置项目的样式属性以将该样式用作资源。
您是否尝试从样式中删除x:Key属性,并将样式声明从网格中移动到图表中?
答案 3 :(得分:1)
如果这是一个WPF应用程序,我想建议一个愚蠢的事情。对不起,请原谅。请将相同的代码复制并粘贴到silverlight应用程序中,然后使用Firebug检查元素。
此外,在您的代码段中,我认为您需要提供:
TargetType="{x:Type Polyline}"
TargetType="{x:Type chartingToolkit:LineDataPoint}"
如果您希望自动将这些样式应用于目标类型,请删除x:Key。
此外,您还可以找到有用的WPF实用程序列表@ http://www.simple-talk.com/dotnet/.net-tools/essential-tools-for-the-wpf-novice/