أساسيات برنامج الأغذية العالمي: كيفية تعيين خاصية الخارجية في DataTrigger؟

StackOverflow https://stackoverflow.com/questions/856588

سؤال

وأنا "م تحاول الحصول على رأسي ملفوفة حول نموذج WPF.

ولدي مربع قائمة العناصر. داخل القائمة عناصر مربع هي المحددات السلسلة. هذا يعمل بشكل جيد. ما أريده هو أن يكون ذلك بحيث المعرف من العنصر المحدد حاليا هو الوصول إليها في قانون بلدي وراء لمراقبة أرفق.

ولدي هذا:

<ListBox.ItemTemplate>
 <DataTemplate>
   <StackPanel Width="320">
    <Label Content="{Binding Path=ShortName}" Style="{StaticResource ListHeader}"/>
      <TextBlock TextWrapping="Wrap" Text="{Binding Path=Description}" Style="{StaticResource ListText}" />
   </StackPanel>
 </DataTemplate>
 </ListBox.ItemTemplate>

وأعتقد أنني يجب أن تضيف شيئا مثل:

<DataTemplate.Triggers>
    <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBoxItem}},Path=IsSelected}" Value="True">
    <Setter Property="" TargetName="">
     <Setter.Value>

     </Setter.Value>
   </Setter>
 </DataTrigger>

ولكن أنا تائه عن كيفية انشاء واضع تعيين خاصية هذا هو جزء من السيطرة إرفاق (أي العالم الخارجي). أعتقد أن لدينا هذه الوراء بطريقة أو بأخرى؟

هل كانت مفيدة؟

المحلول

إذا كنت تحاول الوصول إلى خاصية على قائمة عنصر مربع مختارة من خارج مربع القائمة ثم يمكنك القيام بما يلي في التعليمات البرمجية خلف:

CustomItem item = (CustomItem)listBox1.SelectedItem;
MessageBox.Show(item.ShortName);

وXAML الخاص بك هو كما يلي:

<ListBox Height="100" Name="listBox1">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel Name="stackPanel1">
                    <Label Content="{Binding Path=Shortname}"/>
                    <TextBlock Text="{Binding Path=Description}"/>
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

وأنت فقط يلقي selecteditem من مربع القائمة على نوع الكائن، ثم الوصول إلى الخاصية على الكائن.

وهذا الأمل هو ما كنت بعد.

نصائح أخرى

هل حاولت استخدام SelectedValuePath العقار؟

وعندما يكون لديك قائمة من العملاء مثلا على الممتلكات ItemsSource، وقمت بتعيين SelectedValuePath إلى اسم، والممتلكات الخاصة بك SelectedValue إرجاع اسم العميل بدلا من العميل ...

في التعليمات البرمجية وراء، وSelectedValue سيكون الاسم، فإن SelectedItem عودة الكائن العملاء الخاص بك .. في بلدي على سبيل المثال ..

وهذا الأمل يساعد بطريقة أو بأخرى ..

وحظا سعيدا!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top