Windows Phone 개발을 처음 사용합니다.두 개의 다른 컬렉션을 두 개의 다른 ListPickers에 바인딩하는 방법
두 개의 다른 모음을 두 개의 listpickers에 바인딩하려고했습니다. 두 listpickers 중 하나를 클릭하면 색 또는 똥 유형의 이름이 예상대로 표시되지 않습니다. 난 항상이 내 코드
public partial class Poop_info_page : PhoneApplicationPage
{
public Poop_info_page()
{
InitializeComponent();
//DataContext = ColorExtensions.AccentColors();
//DataContext = ShapeData.ShapeNames();
var colors = ColorExtensions.AccentColors();
colorPicker.ItemsSource = colors;
var poopType = ShapeData.ShapeNames();
shapePicker.ItemsSource = poopType;
}
}
데이터 1
public static class ShapeData
{
private static string[] _shapeNames = { "Separated hard lumps",
"Lumpy sausage",
"Sausage with cracks surface",
"Smooth soft snake",
"Soft blobs with clear cut",
"Mushy and fluffy pieces",
"Entirely liquid" };
public static ReadOnlyCollection<string> ShapeNames()
{
return new ReadOnlyCollection<string>(_shapeNames);
}
}
데이터 2 인이
System.Windows.Data Error: BindingExpression path error: 'colors' property not found on 'Maroon' 'System.String' (HashCode=68540248). BindingExpression: Path='colors' DataItem='Maroon' (HashCode=68540248); target element is 'System.Windows.Controls.TextBlock' (Name=''); target property is 'Text' (type 'System.String')..
같은 오류를 얻을
public static class ColorExtensions
{
/// <summary>
/// An array of all the names of the accent colors.
/// </summary>
private static string[] _accentColors = { "Maroon",
"Medium Brown",
"Light Brown",
"Orange",
"Yellow",
"Red",
"Dark Green",
"Clay",
"Black" };
/// <summary>
/// Returns an array of all the names of the accent colors.
/// </summary>
public static ReadOnlyCollection<string> AccentColors()
{
return new ReadOnlyCollection<string>(_accentColors);
}
}
XML
<phone:PhoneApplicationPage.Resources>
<data:AccentColorNameToBrush x:Key="ColorNameToBrushConverter" />
<data:ShapeTypeToImg x:Key="ShapeNameToImg" />
</phone:PhoneApplicationPage.Resources>
<!--LayoutRoot is the root grid where all page content is placed-->
<Grid x:Name="LayoutRoot" Background="White">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<!--TitlePanel contains the name of the application and page title-->
<StackPanel Grid.Row="0" Margin="12,17,0,0">
<TextBlock Text="POOPOR" Style="{StaticResource PhoneTextNormalStyle}" FontSize="24" Foreground="#FF787B7C"/>
<TextBlock Text="New poop" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}" FontSize="78.667" Foreground="#FF787B7C" FontFamily="Segoe WP SemiLight"/>
</StackPanel>
<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid Margin="0,15">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<toolkit:ListPicker x:Name="colorPicker" ItemsSource="{Binding colors}" FullModeHeader="Poop" CacheMode="BitmapCache" BorderBrush="#FF787B7C" Foreground="#FF787B7C" Margin="0,20,0,0" Grid.Column="2" Width="100" HorizontalContentAlignment="Center">
<toolkit:ListPicker.ItemTemplate>
<DataTemplate>
<StackPanel HorizontalAlignment="Center">
<TextBlock Text="Edit" TextAlignment="Center"/>
</StackPanel>
</DataTemplate>
</toolkit:ListPicker.ItemTemplate>
<toolkit:ListPicker.FullModeItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Margin="0 21 0 20">
<Rectangle Fill="{Binding Converter={StaticResource ColorNameToBrushConverter}}" Width="43" Height="43"/>
<TextBlock Text="{Binding colors}"
Margin="16 0 0 0"
FontSize="43"
FontFamily="{StaticResource PhoneFontFamilyLight}"/>
</StackPanel>
</DataTemplate>
</toolkit:ListPicker.FullModeItemTemplate>
</toolkit:ListPicker>
<StackPanel Margin="15,0,0,0" Grid.Column="1" Width="120">
<TextBlock TextWrapping="Wrap" Text="COLOR" Foreground="Black" FontFamily="Segoe WP Semibold" FontSize="32" Margin="0,7,0,0"/>
<TextBlock x:Name="colorResult_text" TextWrapping="Wrap" Foreground="#FF787B7C" Margin="0">
<Run FontSize="17.333" Text="Light Brown "/>
<Run FontSize="14.667" Text="(Detected result)"/>
</TextBlock>
</StackPanel>
<es:Arc x:Name="colorResult" ArcThickness="1" ArcThicknessUnit="Percent" EndAngle="360" Fill="#FFCB9453" Margin="30,0,0,0" Stretch="None" Stroke="Black" StrokeThickness="0" StartAngle="0" UseLayoutRounding="False" Width="107"/>
</Grid>
<Border BorderThickness="0,0,0,1" VerticalAlignment="Bottom">
<Border.BorderBrush>
<SolidColorBrush Color="#FF727272" Opacity="0.5"/>
</Border.BorderBrush>
</Border>
<Grid Margin="0,15" Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<toolkit:ListPicker x:Name="shapePicker" ItemsSource="{Binding poopType}" FullModeHeader="Poop" CacheMode="BitmapCache" BorderBrush="#FF787B7C" Foreground="#FF787B7C" Margin="0,20,0,0" Grid.Column="2" Width="100" HorizontalContentAlignment="Center">
<toolkit:ListPicker.ItemTemplate>
<DataTemplate>
<StackPanel HorizontalAlignment="Center">
<TextBlock Text="Edit" TextAlignment="Center"/>
</StackPanel>
</DataTemplate>
</toolkit:ListPicker.ItemTemplate>
<toolkit:ListPicker.FullModeItemTemplate>
<DataTemplate x:Name="dataTemplate">
<StackPanel Orientation="Horizontal" Margin="0 21 0 20">
<Image Source="{Binding Converter={StaticResource ShapeNameToImg}}" Width="107" />
<TextBlock Text="{Binding poopType}"
Margin="16 0 0 0"
FontSize="32"
FontFamily="{StaticResource PhoneFontFamilyLight}"/>
</StackPanel>
</DataTemplate>
</toolkit:ListPicker.FullModeItemTemplate>
</toolkit:ListPicker>
<StackPanel Margin="15,0,0,0" Grid.Column="1" Width="120">
<TextBlock TextWrapping="Wrap" Text="SHAPE" Foreground="Black" FontFamily="Segoe WP Semibold" FontSize="32" Margin="0,4,0,0"/>
<TextBlock x:Name="shapeResult_text" TextWrapping="Wrap" Foreground="#FF787B7C" Margin="0" Text="Separate hard lumps"/>
</StackPanel>
<Image x:Name="shapeResult" Margin="30,0,0,0" HorizontalAlignment="Center" Width="107"/>
</Grid>
<Border BorderThickness="0,0,0,1" VerticalAlignment="Bottom" Grid.Row="1">
<Border.BorderBrush>
<SolidColorBrush Color="#FF727272" Opacity="0.5"/>
</Border.BorderBrush>
</Border>
<StackPanel Orientation="Horizontal" Margin="0,15" Grid.Row="2">
<Image x:Name="pain_level_picture" HorizontalAlignment="Center" Width="108" Margin="30,0,0,0" Source="/Assets/img/painLevel/nohurt.png"/>
<StackPanel Margin="15,0,0,0" Width="311">
<TextBlock TextWrapping="Wrap" Text="PAIN LEVEL" Foreground="Black" FontFamily="Segoe WP Semibold" FontSize="24"/>
<TextBlock x:Name="pain_level_description" TextWrapping="Wrap" Foreground="#FF787B7C" FontSize="17.333" Text="Normal pain"/>
<Slider x:Name="painLevel_slider" FontSize="18.667" Padding="0"
Margin="-24,-5,24,0" Foreground="#FF1BA1E2" BorderBrush="Black" BorderThickness="2"
Maximum="5" Minimum="1" SmallChange="1"
>
<Slider.Background>
<ImageBrush ImageSource="Assets/img/slider.png"/>
</Slider.Background>
</Slider>
</StackPanel>
</StackPanel>
<Border BorderThickness="0,0,0,1" VerticalAlignment="Bottom" Grid.Row="2">
<Border.BorderBrush>
<SolidColorBrush Color="#FF727272" Opacity="0.5"/>
</Border.BorderBrush>
</Border>
<StackPanel Orientation="Horizontal" Margin="0,15" Grid.Row="3">
<Image x:Name="blood_amount_picture" HorizontalAlignment="Center" Width="108" Margin="30,0,0,-1" Source="/Assets/img/bloodAmount/noblood.png"/>
<StackPanel Margin="15,0,0,0">
<TextBlock TextWrapping="Wrap" Text="BLOOD AMOUNT" Foreground="Black" FontFamily="Segoe WP Semibold" FontSize="24"/>
<TextBlock x:Name="blood_amount_description" TextWrapping="Wrap" Foreground="#FF787B7C" FontSize="17.333" Text="5 Blood Amount Measurement"/>
<Slider x:Name="blood_amount_slider" FontSize="18.667" Padding="0"
Margin="-24,-5,24,0" Foreground="#FF1BA1E2" BorderBrush="Black" BorderThickness="2"
Maximum="5" Minimum="1" SmallChange="1"
Width="311"
>
<Slider.Background>
<ImageBrush ImageSource="Assets/img/slider.png"/>
</Slider.Background>
</Slider>
</StackPanel>
</StackPanel>
</Grid>
<Button x:Name="newPoop_submit_button" Content="Submit" VerticalAlignment="Center" Grid.Row="2" Background="#FF1BA1E2" FontSize="30.667" Click="newPoop_submit_button_Click"/>
</Grid>
ps. 내가 좋아할 때
DataContext = ColorExtensions.AccentColors();
DataContext = ShapeData.ShapeNames();
잘 작동하지만 ColorExtensions 데이터 또는 ShapeData 데이터를 사용할 수 있습니다. (당신이 코드에서 설정 한대로) Preperty 경로 (색)와 ItemsSource를 제거 - -
public partial class Poop_info_page : PhoneApplicationPage
{
public Poop_info_page()
{
InitializeComponent();
colorPicker.ItemsSource = ColorExtensions.AccentColors();
shapePicker.ItemsSource = ShapeData.ShapeNames();
}
}
을 그리고 XAML에서 유사한
관련
는
도움 주셔서 감사합니다. 그것은 지금 잘 작동합니다! – user2503808
@ user2503808 여러분 환영합니다. 몇 가지 방법으로도 수행 할 수 있습니다. 모든 것은 사용자 요구에 따라 다릅니다. 자세한 내용은 예제 witm Binding 및 DataContext (MSDN 및 블로그에서 쉽게 찾을 수 있음)를 따르십시오. – Romasz