2010-09-14 83 views
0

任何建議如何發現故障以找出爲什麼在這個XAML中的Grid.Resources樣式沒有產生任何影響似乎最終結果?WPF - 如何確定爲什麼這個XAML樣式代碼不工作?

注意我使用WPFToolkit中的圖表來調整圖表看起來似乎必須應用樣式區域(由論壇上的某個人建議)。

所以我的問題是一般性的,注意到我試圖調整第三方圖的外觀,我該如何調試/錯誤發現以瞭解發生了什麼問題?有沒有一個調試技巧?例如,當我將BorderThickness增加到30時,我看不出有什麼區別。我真正追求的是相當於HTML/CSS的FireBug,它可以讓你理解/查看哪些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> 

回答

2

既然你已經給了你x:Key需要明確設置的樣式屬性的樣式您。項目將該樣式用作資源。

您是否嘗試從樣式中移除x:Key屬性,並將樣式聲明從網格移動到圖表中?

+0

更新 - 這是一個問題,但仍然無法獲得圖形格式更改 – Greg 2010-09-15 00:06:01

+0

嗯,你能否更新你的問題,以便我們看到你目前正在嘗試的?這裏有幾個答案,這可能有助於瞭解你現在正在嘗試做什麼。 – Val 2010-09-15 00:30:04

+0

也許我應該關閉這個問題,並開始一個新的問題,因爲問題已經演變了一下 - 我也得到snoop工作,這是一個很好的工具 – Greg 2010-09-15 07:00:08

2

查看VS中的輸出窗口。所有綁定錯誤記錄在此窗口中。此外,tool Snoop允許看到有錯誤的綁定。

+0

在這種情況下,關於無錯誤情況的更多(我認爲) - 以及模板更改是否真正排隊以覆蓋默認值 - 我認爲...... – Greg 2010-09-14 06:56:05

+0

VS顯示綁定問題。這將如何幫助一個沒有被拾起的風格? – 2010-09-14 11:52:04

1

如果這是一個WPF應用程序,我想建議一個愚蠢的東西。對不起。請將相同的代碼複製並粘貼到Silverlight應用程序中,然後使用Firebug檢查該元素。

此外,在您的代碼段,我認爲你需要給:

TargetType="{x:Type Polyline}"

TargetType="{x:Type chartingToolkit:LineDataPoint}"

如果你想成爲的目標類型自動應用這些樣式,然後取出X :鍵。

此外,你可以找到有用的WPF公用事業@http://www.simple-talk.com/dotnet/.net-tools/essential-tools-for-the-wpf-novice/

+0

雖然我不確定這是否會突出顯示模板覆蓋會出現錯誤/未對齊的位置/原因? – Greg 2010-09-14 06:57:08

+0

我認爲,如果我沒有錯,我們可以檢查最新的螢火蟲中的事件和腳本渲染。 – 2010-09-14 07:08:45

3

列表作爲SeeSharp說,探聽允許您查看在運行時的對象樹(和改變價值觀和看到的結果等)。不過,我認爲你的問題可能是你沒有明確地在<chartingToolkit:Chart />對象上應用樣式。

嘗試以下操作之一,看看它是否有差別:

將樣式的對象:

<chartingToolkit:Chart 
    ... 
    Style="{DynamicResource GoogleLineDataPointStyle}" 
    ... 
    > 

或刪除風格的關鍵,這樣它只有一個TargetType的屬性(應使它的默認樣式該類型的所有對象:

<Style TargetType="chartingToolkit:LineDataPoint"> 
    ... 
</Style> 
+0

哦,是的 - 這是有區別的感謝。 Re Snoop我做了一些簡單的嘗試,但似乎沒有奏效。也許這是因爲我的應用程序是WPF 4? – Greg 2010-09-14 07:36:25

+0

如果您指的是穿越Native/Managed屏障的TypeLoad異常,請在遇到異常後嘗試按'Play'或'Run' - 我得到它並且它仍然可以正常運行(也是WPF 4應用程序)。穩定性不是100%,但它仍然相當可用 – jeffora 2010-09-14 07:38:22

+0

也不例外 - 只是似乎沒有工作 - 可能引發另一個問題重新探索 – Greg 2010-09-15 00:06:46

相關問題