2012-04-11 7 views
1

EDIT: Es scheint, dassListPickerder Weg zu gehen, aber ich habe weitere Probleme hatte mit dieser detailliertenMicrosoft.Phone.Controls.Toolkit ListPicker throws XamlParseExceptionindia ComboBox nicht angezeigt Entscheidungen richtig

ich folgende ComboBox in Code haben:

<ComboBox x:Name="Result" Grid.Column="6" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="Black" Background="White"> 
    <ComboBoxItem Content="Win" /> 
    <ComboBoxItem Content="Place" /> 
    <ComboBoxItem Content="Lose" /> 
</ComboBox> 

Aber es wird nicht angezeigt, wie ich es erwartet hätte. Wenn Sie die ComboBox öffnen, erscheinen die Optionen nicht, es ist wie bei leeren Objekten. Siehe unten:

enter image description here

Wenn jedoch ein Element ausgewählt ist, zeigt es richtig und das richtige Index/Element zurückgegeben. Siehe unten:

enter image description here

Ich bin sicher, es ist etwas einfach ich verpasst haben, aber kann nicht meinen Finger auf sie.

EDIT: Ok Ich poste den vollen Code dafür. Ich habe eine Benutzersteuerung, OddsRow, die wie folgt aussieht:

<UserControl xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit" x:Class="MojoPinBetOddsCalculator.OddsRow" 
    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" 
    mc:Ignorable="d" 
    FontFamily="{StaticResource PhoneFontFamilyNormal}" 
    FontSize="{StaticResource PhoneFontSizeNormal}" 
    Foreground="{StaticResource PhoneForegroundBrush}" 
    d:DesignHeight="480" d:DesignWidth="480"> 

    <Grid x:Name="LayoutRoot" Background="{StaticResource PhoneChromeBrush}"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="70"/> 
     </Grid.RowDefinitions> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="50*"></ColumnDefinition> 
      <ColumnDefinition Width="70*"></ColumnDefinition> 
      <ColumnDefinition Width="30*"></ColumnDefinition> 
      <ColumnDefinition Width="70*"></ColumnDefinition> 
      <ColumnDefinition Width="70*"></ColumnDefinition> 
      <ColumnDefinition Width="70*" ></ColumnDefinition> 
      <ColumnDefinition Width="100*"></ColumnDefinition> 
     </Grid.ColumnDefinitions> 
     <TextBlock x:Name="RowNumber" Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Center"></TextBlock> 
     <TextBox x:Name="OddsNumerator" Grid.Column="1" Width="90" Height="70" HorizontalAlignment="Center" TextAlignment="Center" VerticalAlignment="Center" MaxLength="3" InputScope="TelephoneNumber"></TextBox> 
     <TextBlock x:Name="Slash" Grid.Column="2" Text="/" HorizontalAlignment="Center" VerticalAlignment="Center"></TextBlock> 
     <TextBox x:Name="OddsDenominator" Grid.Column="3" Width="90" Height="70" VerticalAlignment="Center" TextAlignment="Center" MaxLength="3" HorizontalAlignment="Center" InputScope="TelephoneNumber"></TextBox> 
     <CheckBox x:Name="EachWay" Grid.Column="4" VerticalAlignment="Center" HorizontalAlignment="Center" Margin="10,0,0,0" /> 
     <CheckBox x:Name="Place" Grid.Column="5" HorizontalAlignment="Center" VerticalAlignment="Center" BorderThickness="0" Width="71" Margin="10,0,0,0" Padding="0" /> 
     <ComboBox x:Name="Result" Grid.Column="6" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="Black" Background="White"> 
      <ComboBoxItem Content="Win" /> 
      <ComboBoxItem Content="Place" /> 
      <ComboBoxItem Content="Lose" /> 
     </ComboBox> 
    </Grid> 
</UserControl> 

Und es ist in der Mainpage wie so angezeigt:

<phone:PhoneApplicationPage xmlns:my="clr-namespace:MojoPinBetOddsCalculator" 
    x:Class="MojoPinBetOddsCalculator.MainPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone" 
    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768" 
    FontFamily="{StaticResource PhoneFontFamilyNormal}" 
    FontSize="{StaticResource PhoneFontSizeNormal}" 
    Foreground="{StaticResource PhoneForegroundBrush}" 
    SupportedOrientations="Portrait" Orientation="Portrait" 
    shell:SystemTray.IsVisible="True"> 

    <!--LayoutRoot is the root grid where all page content is placed--> 
    <Grid x:Name="LayoutRoot" Background="Transparent"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="*"/> 
     </Grid.RowDefinitions> 

     <!--TitlePanel contains the name of the application and page title--> 
     <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28"> 
      <TextBlock x:Name="ApplicationTitle" Text="BET ODDS CALCULATOR" Style="{StaticResource PhoneTextNormalStyle}"/> 
      <TextBlock x:Name="PageTitle" Text="calculate" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/> 
     </StackPanel> 
     <!--ContentPanel - place additional content here--> 
     <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0" HorizontalAlignment="Stretch"> 
      <Grid x:Name="Scrollable"> 
       <ScrollViewer> 
       <Grid x:Name="BettingGrid"> 
        <Grid.RowDefinitions> 
         <RowDefinition Height="Auto"></RowDefinition> 
         <RowDefinition Height="*"></RowDefinition> 
        </Grid.RowDefinitions> 
        <Grid x:Name="BetList"> 
         <Grid.RowDefinitions> 
          <RowDefinition Height="30"></RowDefinition> 
          <RowDefinition Height="70"></RowDefinition> 
          <RowDefinition Height="70"></RowDefinition> 
          <RowDefinition Height="70"></RowDefinition> 
          <RowDefinition Height="70"></RowDefinition> 
          <RowDefinition Height="70"></RowDefinition> 
          <RowDefinition Height="70"></RowDefinition> 
         </Grid.RowDefinitions> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="50*"></ColumnDefinition> 
          <ColumnDefinition Width="70*"></ColumnDefinition> 
          <ColumnDefinition Width="30*"></ColumnDefinition> 
          <ColumnDefinition Width="70*"></ColumnDefinition> 
          <ColumnDefinition Width="70*"></ColumnDefinition> 
          <ColumnDefinition Width="70*"></ColumnDefinition> 
          <ColumnDefinition Width="100*"></ColumnDefinition> 
         </Grid.ColumnDefinitions> 
         <TextBlock Text="EW" Style="{StaticResource PhoneTextNormalStyle}" Grid.Row="0" Grid.Column="4" HorizontalAlignment="Center" /> 
         <TextBlock Text="Place" Style="{StaticResource PhoneTextNormalStyle}" Grid.Row="0" Grid.Column="5" HorizontalAlignment="Center" /> 
         <TextBlock Text="Result" Style="{StaticResource PhoneTextNormalStyle}" Grid.Row="0" Grid.Column="6" HorizontalAlignment="Center" /> 
         <my:OddsRow Grid.Row="1" Grid.ColumnSpan="7" Row="1"/> 
         <my:OddsRow Grid.Row="2" Grid.ColumnSpan="7" Row="2"/> 
         <my:OddsRow Grid.Row="3" Grid.ColumnSpan="7" Row="3"/> 
         <my:OddsRow Grid.Row="4" Grid.ColumnSpan="7" Row="4"/> 
         <my:OddsRow Grid.Row="5" Grid.ColumnSpan="7" Row="5"/> 
         <my:OddsRow Grid.Row="6" Grid.ColumnSpan="7" Row="6"/> 
        </Grid> 
        <Grid x:Name="ControlsGrid" Grid.Row="1"> 
         <Button x:Name="AddRowButton" Background="#BFFFFFFF" BorderBrush="#BFFFFFFF" Foreground="Black" Content="Add Row" FontSize="16" Click="AddRowButton_Click" Height="70" /> 
        </Grid> 
       </Grid> 
       </ScrollViewer> 
      </Grid> 
     </Grid> 
    </Grid> 
</phone:PhoneApplicationPage> 

Getrennt die ComboBox Werke, und auch den Code für die OddsRow Werke wie erwartet ... getrennt. Wenn es kombiniert wird, werden die Elemente nicht angezeigt.

OddsRow.xaml.cs

public partial class OddsRow : UserControl 
{ 
    private int m_Row; 

    public OddsRow() 
    { 
     InitializeComponent(); 
    } 

    public int Row 
    { 
     get 
     { 
      return m_Row; 
     } 
     set 
     { 
      m_Row = value; 
      RowNumber.Text = m_Row + " - "; 
     } 
    } 
} 
+2

Das funktioniert ok für mich. Könnte es ein benutzerdefinierter Stil sein, der den Text in der Combobox weiß macht? – Robaticus

+0

Hmm ... Ja, es funktioniert wie erwartet, wenn ich es in ein separates Projekt lege. Vielleicht poste ich das vollständige Markup, um zu sehen, ob irgendjemand etwas entdecken kann. – anothershrubery

+0

Ok aktualisierte vollständige Markup. – anothershrubery

Antwort

2

Für die Liebe alles, benutzen Sie bitte den Bestand ComboBox nicht. Verwenden Sie etwas wie . Dadurch wird Ihre Anwendung einheitlicher mit der Metro-Benutzeroberfläche angezeigt.

+0

Ich werde in den ListPicker schauen, wenn ich eine Chance bekomme. Ich habe es mir kurz angeschaut und eine 'InvalidProgramException' bekommen, aber ich bin mir sicher, dass sie leicht mit einem besseren Blick darauf sortiert werden kann. – anothershrubery

+1

Wenn ich eine Taste "+10" hätte, würde ich darauf klicken, um @Dennis zu beantworten ... bitte ** verwende nicht das ComboBox-Steuerelement und geh zum ListenPicker !!! –

+0

Ich habe dies als die Antwort markiert, da es der richtige Track zu sein scheint, aber ich habe ein weiteres Problem mit 'ListPicker', detailliert unter http://stackoverflow.com/questions/10155688/microsoft-phone-controls- toolkit-listpicker-throws-xamlparseexception – anothershrubery

Verwandte Themen