2010-03-25 16 views
1

我剛開始學習WPF,並且遵循一本書來製作XAML中的示例計算器應用程序。 XAML代碼附在下面。 我在xaml.cs文件中沒有任何UI特定的代碼。WPF初學者 - 一個簡單的XAML佈局不按預期工作

但是,我看到設計時間和運行時間之間的差異。正如你在附件screenshot中看到的那樣,計算器的左上角按鈕比其他的要大。

更令人困惑的是,設計師在編輯XAML時正確顯示按鈕。

我試圖確定這是爲什麼,我很難過。誰能幫忙?

我使用的VS2008,目標框架3.5,如果它的任何幫助。

這裏的XAML:

<Window x:Class="TestWpf2008.Calculator" 

    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="clr-namespace:TestWpf2008" 
    Title="Calculator" FontFamily="Calibri" FontSize="15" 
    SizeToContent="WidthAndHeight" Loaded="Window_Loaded"> 
<Window.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="Dictionary1.xaml"/> 
      <ResourceDictionary> 
       <SolidColorBrush x:Key="MyTitleColor" Color="Chocolate" /> 
       <Style TargetType="Button"> 
        <Setter Property="Margin" Value="6"/> 
       </Style> 
      </ResourceDictionary> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Window.Resources> 
<Grid Background="{StaticResource PrettyBrush}"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*" /> 
     <ColumnDefinition Width="*" /> 
     <ColumnDefinition Width="*" /> 
     <ColumnDefinition Width="*" /> 
    </Grid.ColumnDefinitions> 
    <Grid.RowDefinitions> 
     <RowDefinition /> 
     <RowDefinition /> 
     <RowDefinition /> 
     <RowDefinition /> 
     <RowDefinition /> 
     <RowDefinition /> 
    </Grid.RowDefinitions> 

    <TextBlock Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="4" FontSize="24" 
       Name="Header" 
       VerticalAlignment="Center" HorizontalAlignment="Center">Calculator</TextBlock> 
    <TextBox Grid.ColumnSpan="4" Grid.Column="0" Grid.Row="1" Name="Display" 
      HorizontalContentAlignment="Left" Margin="5" /> 
    <Button Grid.Row="2" Grid.Column="0" Click="Button_Click">7</Button> 
    <Button Grid.Row="2" Grid.Column="1" Click="Button_Click">8</Button> 
    <Button Grid.Row="2" Grid.Column="2" Click="Button_Click">9</Button> 

    <Button Grid.Row="3" Grid.Column="0" Click="Button_Click">4</Button> 
    <Button Grid.Row="3" Grid.Column="1" Click="Button_Click">5</Button> 
    <Button Grid.Column="2" Grid.Row="3" Click="Button_Click">6</Button> 

    <Button Grid.Row="4" Grid.Column="0" Click="Button_Click">1</Button> 
    <Button Grid.Row="4" Grid.Column="1" Click="Button_Click">2</Button> 
    <Button Grid.Row="4" Grid.Column="2" Click="Button_Click">3</Button> 


    <Button Grid.Row="5" Grid.Column="0" Click="Button_Click">0</Button> 

    <Button Grid.Row="5" Grid.Column="3" Tag="{x:Static local:Operation.PLUS}" 
      Click="Op_Click">+</Button> 
    <Button Grid.Row="4" Grid.Column="3" Tag="{x:Static local:Operation.MINUS}" 
      Click="Op_Click">-</Button> 
    <Button Grid.Row="3" Grid.Column="3" Tag="{x:Static local:Operation.TIMES}" 
      Click="Op_Click">*</Button> 
    <Button Grid.Row="2" Grid.Column="3" Tag="{x:Static local:Operation.DIVIDE}" 
      Click="Op_Click">/</Button> 

    <Button Grid.Row="5" Grid.Column="1" >.</Button> 
    <Button Grid.Row="5" Grid.Column="2" Tag="{x:Static local:Operation.EQUALS}" 
      Click="Op_Click">=</Button> 

</Grid> </Window> 
+2

的代碼示例項目之間容易重用的合併resourcedictionarys做什麼是缺少與電網定義你的行和列的定義。 – Oskar 2010-03-25 12:51:48

回答

0

從MSDN

是合法的被指定爲合併字典資源字典中定義的資源,無論是作爲一種替代方法來指定來源,或除了來自指定來源的任何資源之外。但是,這不是一個常見的情況;合併字典的主要場景是合併來自外部文件位置的資源。如果要在頁面的標記中指定資源,通常應在主ResourceDictionary中定義這些資源,而不是在合併的字典中定義這些資源。

所以,你只需要從合併的ResourceDictionary

了移動的風格,但我建議你應該

移動

<ResourceDictionary> 
    <ResourceDictionary.MergedDictionaries> 
     <ResourceDictionary Source="Dictionary1.xaml"/> 
    </ResourceDictionary.MergedDictionaries> 
</ResourceDictionary> 

在App.xaml中

Application.Resources

保留

<Style TargetType="Button"> 
    <Setter Property="Margin" Value="6"/> 
</Style> 
在Window.Resources

,因爲這是你usally會用,因爲你的「Dictionary1.xaml」