0
내가 한 페이지에 두 개의 컨트롤을 제어합니다
1 RadSlider
2. 목록 상자MVVM 기반 항목
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<Grid.RowDefinitions>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="100"></RowDefinition>
</Grid.RowDefinitions>
<telerik:RadSlideView Name="imgSlidView" >
<telerik:RadSlideView.ItemTemplate>
<DataTemplate>
<Image Source="{Binding Src}"></Image>
</DataTemplate>
</telerik:RadSlideView.ItemTemplate>
<telerik:RadSlideView.ItemPreviewTemplate>
<DataTemplate>
<telerik:RadBusyIndicator></telerik:RadBusyIndicator>
</DataTemplate>
</telerik:RadSlideView.ItemPreviewTemplate>
</telerik:RadSlideView>
<ListBox Grid.Row="1" Name="lstImage">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"></StackPanel>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<Image Height="100" Margin="0,0,5,0" Source="{Binding Src}"></Image>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
나는 하나의 항목에 두 개의 컨트롤을 바인딩 할 하나의 선택을 변경하면 다른 사람의 선택도 변경되어야합니다.
MVVM 기반 솔루션에 관심이 있습니다. 내 코드 :이 외에도
class CategoryViewModel : ViewModelBase
{
public ObservableCollection<ImageSource> ImageCollection { get; set; }
private ImageSource _CurrentImage;
public ImageSource CurrentImage
{
get { return _CurrentImage; }
set
{
_CurrentImage = value;
RaisePropertyChanged("CurrentImage");
}
}
}
내가는 IEnumerable을 반환 코드의 조각을 가지고 있고 나는이 항목 소스로되고 싶어요.
public static async Task<IEnumerable<Object>> GetCategoryNames()
{
if (Categories == null)
{
JDir dir = Newtonsoft.Json.JsonConvert.DeserializeObject<JDir>(await LoadFromJson());
Categories = ConvertJDirToCategory(dir);
return Categories.Select(p => new { Name = p.Name, Src = "Images/" + p.Name + ".jpg" });
}
else
{
return Categories.Select(p => new { Name = p.Name, Src = "Images/" + p.Name + ".jpg" });
}
}
올바른 방법으로하고 있습니까? 어떻게해야합니까?
미리 감사드립니다.
편집 - 의견 :
private static async Task<string> LoadFromJson()
{
string theData = string.Empty;
StorageFile file = await Windows.Storage.StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///data.json"));
using (StreamReader streamReader = new StreamReader(await file.OpenStreamForReadAsync()))
{
return await streamReader.ReadToEndAsync();
}
}
어떻게 '구현 LoadFromJson'입니까? –
설치 폴더에서'private static async 작업 LoadFromJson() { 문자열 theData = string.Empty; StorageFile 파일 = Windows.Storage.StorageFile.GetFileFromApplicationUriAsync (새 Uri ("ms-appx : ///data.json")); using (StreamReader streamReader = 새 StreamReader (파일 대기 열기, OpenStreamForReadAsync()) { return return streamReader.ReadToEndAsync(); } } –
이게 맞습니까? 문제가 무엇인가요? 왜 GetCategoryNames의 결과를 콜렉션에 바인딩하지 않을까요? –