مشکل در بایند کردن tabcontrol
من یکobservablecollection تعریف کردم به این شکل :
private ObservableCollection<HeaderDetail> _tabs;
public ObservableCollection<HeaderDetail> Tabs
{
get { return _tabs; }
set { SetValue(ref _tabs, value); }
}
و یک کلاس هم به این شکل:
public class HeaderDetail
{
public IList<PageShowRec> Header { get; set; }
public IList<DetailRec> DetailPesrson { get; set; }
}
و یک تب کنترل هم دارم به این شکل:
<TabControl x:Name="_tabControl" ItemsSource="{Binding Tabs}">
<TabControl.ItemContainerStyle>
<Style TargetType="TabItem">
<Setter Property="Header" Value="{Binding Header}"/>
<Setter Property="Content" Value="{Binding DetailPesrson}"/>
</Style>
</TabControl.ItemContainerStyle>
</TabControl>
و متدی دارم به این شکل:
Tabs = new ObservableCollection<HeaderDetail>();
Tabs.Add(new HeaderDetail { Header = objDetail.CurPageShowList });
Tabs.Add(new HeaderDetail { DetailPesrson = objDetail.CurDetailList });
میخوام تب کنترل هدر و محتوای اون از این observablecollection پر بشه ولی پر نمیشه ایا مشکلی تو کدها است؟
نقل قول: مشکل در بایند کردن tabcontrol
سلام
احتمالا مشکل از اینه که پروپرتی های Header و DetailPesrson در کلاسِ HeaderDetail را از نوعِ لیست گرفتین .
این پروپرتی ها را چون در TabItem تون Binding کردین ، باید آیتم های تکی باشن . یعنی از نوع لیست نباشن .
نوعِ DetailRec تون نمیدونم از چه نوعی هست . ولی استانداردش اینه که از نوعِ Panel ای باشه که شامل محتوا و کنترل هایی که در اون TabItem تون میخواد مشخص بشه .
نقل قول: مشکل در بایند کردن tabcontrol
نقل قول:
نوشته شده توسط
ma.andishe
من یکobservablecollection تعریف کردم به این شکل :
private ObservableCollection<HeaderDetail> _tabs;
public ObservableCollection<HeaderDetail> Tabs
{
get { return _tabs; }
set { SetValue(ref _tabs, value); }
}
و یک کلاس هم به این شکل:
public class HeaderDetail
{
public IList<PageShowRec> Header { get; set; }
public IList<DetailRec> DetailPesrson { get; set; }
}
و یک تب کنترل هم دارم به این شکل:
<TabControl x:Name="_tabControl" ItemsSource="{Binding Tabs}">
<TabControl.ItemContainerStyle>
<Style TargetType="TabItem">
<Setter Property="Header" Value="{Binding Header}"/>
<Setter Property="Content" Value="{Binding DetailPesrson}"/>
</Style>
</TabControl.ItemContainerStyle>
</TabControl>
و متدی دارم به این شکل:
Tabs = new ObservableCollection<HeaderDetail>();
Tabs.Add(new HeaderDetail { Header = objDetail.CurPageShowList });
Tabs.Add(new HeaderDetail { DetailPesrson = objDetail.CurDetailList });
میخوام تب کنترل هدر و محتوای اون از این observablecollection پر بشه ولی پر نمیشه ایا مشکلی تو کدها است؟
مدل بصورت زیر تغییر کنه
public string Header { get; set; }
public string Content { get; set; }
البته Contentرو بعدا میتونید تغییر بدید
نحوه افزودن شما اشتباه هست و هر دو پراپرتی باید توی یک خط مقدار دهی بشه ن اینکه 2 تا instance جدا ایجاد کنید
Tabs.Add(new TabItem { Header = "One", Content = "One's content" });
Tabs.Add(new TabItem { Header = "Two", Content = "Two's content" });
itemtemplate و contenttemplate رو اورراید کنید و پراپرتی هارو بایند کنید
<TabControl.ItemTemplate>
<DataTemplate>
<TextBlock
Text="{Binding Header}" />
</DataTemplate>
</TabControl.ItemTemplate>
<TabControl.ContentTemplate>
<DataTemplate>
<TextBlock
Text="{Binding Content}" />
</DataTemplate>
</TabControl.ContentTemplate>
نقل قول: مشکل در بایند کردن tabcontrol
اگر بخوام برای هر کانتنت محتوای متفاوت مثلا یکی لیست نشون یکی گرید چکار باید بکنم؟ اگه میشه با سمپل نشون بدید ممنون میشم
نقل قول: مشکل در بایند کردن tabcontrol
نقل قول:
نوشته شده توسط
ma.andishe
اگر بخوام برای هر کانتنت محتوای متفاوت مثلا یکی لیست نشون یکی گرید چکار باید بکنم؟ اگه میشه با سمپل نشون بدید ممنون میشم
اول باید تمپلیت رو تغییر بدی
<TabControl.ContentTemplate>
<DataTemplate>
<ContentControl
Content="{Binding Content}" />
</DataTemplate>
</TabControl.ContentTemplate>
بعد پراپرتی رو به جای استرینگ نوع مناسب قرار بدی تا بتونی توش گرید یا چیز دیگه بزاری
نقل قول: مشکل در بایند کردن tabcontrol
نقل قول:
نوشته شده توسط
barnamenevisjavan
اول باید تمپلیت رو تغییر بدی
<TabControl.ContentTemplate>
<DataTemplate>
<ContentControl
Content="{Binding Content}" />
</DataTemplate>
</TabControl.ContentTemplate>
بعد پراپرتی رو به جای استرینگ نوع مناسب قرار بدی تا بتونی توش گرید یا چیز دیگه بزاری
ممنون از پاسختون