hercool
پنج شنبه 22 آبان 1393, 20:37 عصر
سلام دوستان
من یه مشکل دارم لیست باکسی دارم که توش هر ایتم به کمک یک ایتم تمپلیت ایجاد میشه
و مشکلی که دارم اینه که اگه روی button که درون itemtemplate تعریف کردم کلیک کنم نمیتونم به مقادیر اون ایتمی که اون button کلیک خورده دسترسی داشته باشم
itemtemplate
<Page.Resources>
<DataTemplate x:Key="s">
<StackPanel Orientation="Horizontal">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}"/>
<TextBlock Text="{Binding Price_Buy}"/>
</StackPanel>
<StackPanel>
<Button Content="E" Name="Enter" Width="100" Click="Enter_Click_1" >
</Button>
</StackPanel>
</StackPanel>
</DataTemplate>
</Page.Resources>
سعی کردم از این توابع استفاده کنم که نشد
private void Enter_Click_1(object sender, RoutedEventArgs e)
{
MarketWatch item = (MarketWatch)LV_MarketWatch.SelectedItem;
ListBoxItem myListBoxItem =
(ListBoxItem)(LV_MarketWatch.ItemContainerGenerato r.ContainerFromItem(LV_MarketWatch.Items.CurrentIt em));
// Getting the ContentPresenter of myListBoxItem
ContentPresenter myContentPresenter = FindVisualChild<ContentPresenter>(myListBoxItem);
// Finding textBlock from the DataTemplate that is set on that ContentPresenter
DataTemplate myDataTemplate = myContentPresenter.ContentTemplate;
MarketWatch m = (MarketWatch)myContentPresenter.Content;
MessageBox.Show("sssssssssssss"+ m.Name /*+item.Code+"\t"+item.Name*/);
}
private childItem FindVisualChild<childItem>(DependencyObject obj)
where childItem : DependencyObject
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
{
DependencyObject child = VisualTreeHelper.GetChild(obj, i);
if (child != null && child is childItem)
return (childItem)child;
else
{
childItem childOfChild = FindVisualChild<childItem>(child);
if (childOfChild != null)
return childOfChild;
}
}
return null;
}
تنها اگر اول ایتم را انتخاب و بعد روی button کلیک کنم می تونم اطلاعات را بگیرم اما اگر بدون انتخاب ایتم لیست باکس روی button کلیک کنم به اطلاعات دسترسی ندارم
ممنون میشم راهنماییم کنید
من یه مشکل دارم لیست باکسی دارم که توش هر ایتم به کمک یک ایتم تمپلیت ایجاد میشه
و مشکلی که دارم اینه که اگه روی button که درون itemtemplate تعریف کردم کلیک کنم نمیتونم به مقادیر اون ایتمی که اون button کلیک خورده دسترسی داشته باشم
itemtemplate
<Page.Resources>
<DataTemplate x:Key="s">
<StackPanel Orientation="Horizontal">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}"/>
<TextBlock Text="{Binding Price_Buy}"/>
</StackPanel>
<StackPanel>
<Button Content="E" Name="Enter" Width="100" Click="Enter_Click_1" >
</Button>
</StackPanel>
</StackPanel>
</DataTemplate>
</Page.Resources>
سعی کردم از این توابع استفاده کنم که نشد
private void Enter_Click_1(object sender, RoutedEventArgs e)
{
MarketWatch item = (MarketWatch)LV_MarketWatch.SelectedItem;
ListBoxItem myListBoxItem =
(ListBoxItem)(LV_MarketWatch.ItemContainerGenerato r.ContainerFromItem(LV_MarketWatch.Items.CurrentIt em));
// Getting the ContentPresenter of myListBoxItem
ContentPresenter myContentPresenter = FindVisualChild<ContentPresenter>(myListBoxItem);
// Finding textBlock from the DataTemplate that is set on that ContentPresenter
DataTemplate myDataTemplate = myContentPresenter.ContentTemplate;
MarketWatch m = (MarketWatch)myContentPresenter.Content;
MessageBox.Show("sssssssssssss"+ m.Name /*+item.Code+"\t"+item.Name*/);
}
private childItem FindVisualChild<childItem>(DependencyObject obj)
where childItem : DependencyObject
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
{
DependencyObject child = VisualTreeHelper.GetChild(obj, i);
if (child != null && child is childItem)
return (childItem)child;
else
{
childItem childOfChild = FindVisualChild<childItem>(child);
if (childOfChild != null)
return childOfChild;
}
}
return null;
}
تنها اگر اول ایتم را انتخاب و بعد روی button کلیک کنم می تونم اطلاعات را بگیرم اما اگر بدون انتخاب ایتم لیست باکس روی button کلیک کنم به اطلاعات دسترسی ندارم
ممنون میشم راهنماییم کنید