كيف يمكنني تحديث التسمية التي هي في ControlTemplate من شريط الأدوات في برنامج الأغذية العالمي؟

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

  •  03-07-2019
  •  | 
  •  

سؤال

ولدي ControlTemplate التي تتكون من ToolBarTray وشريط الأدوات. في شريط الأدوات، لدي العديد من الأزرار وثم تسمية. أريد أن أكون قادرا على تحديث التسمية في شريط الأدوات مع شيء من هذا القبيل "1 من 10"

وفكرتي الأولى هي أن يجد برمجيا التسمية وضعه، ولكن أنا أقرأ أن هذا يجب أن يتم ذلك مع النوابض. أواجه صعوبة في فهم كيفية تحقيق ذلك. أي أفكار؟

   <Style x:Key="DocViewerToolBarStyle" TargetType="{x:Type ContentControl}">
   <Setter Property="Template">
     <Setter.Value>
           <ControlTemplate TargetType="{x:Type ContentControl}">
              <ToolBarTray... />
              <ToolBar.../>
              <Button../>             
              <Button..>

             <Label x:Name="myStatusLabel"  .. />
هل كانت مفيدة؟

المحلول

والغرض من ControlTemplate هو تحديد شكل عنصر تحكم. لمشكلتك، وأنا لست متأكدا مما اذا كان قالب عنصر تحكم هو الحل الصحيح.

وكما يشير براين أيضا، يجب عليك ربط المحتوى ملكا للتسمية إلى الممتلكات التي هي موجودة في التحكم الخاصة بك بالفعل. وينبغي أن يتم ذلك عن طريق <م> TemplateBinding .

<Label x:Name="myStatusLabel" Content={TemplateBinding MyStatusLabelProperty} ../>

والخاصية <م> MyStatusLabelProperty ثم أن الوجود في الدرجة التحكم الخاصة بك. عادة، هل خلق الخاصة بك UserControl الذي له خاصية تبعية من النوع الصحيح (إما كائن أو سلسلة) الذي يسمى MyStatusLabelProperty.

نصائح أخرى

وأود أن تعيين التسمية إلى "المحتوى" سمة من التحكم الخاصة بك منها مثلا.

<Label x:Name="myStatusLabel"  Content="{TemplateBinding Content}"/>

وبعد ذلك يمكنك تعيين نص التسمية الخاص بك مع السمة المحتوى الخاص بك هرم وجوه و.

وأود أن خلق نموذج عرض الذي ينفذ اجهة INotifyPropertyChanged واستخدام DataTemplate لعرضه باستخدام شيء من هذا القبيل:

<DataTemplate DataType={x:Type viewmodel:MyToolBarViewModel}>
    <Label Content={Binding CurrentPage} />
    <Label Content={Binding TotalPages} ContentStringFormat="{}of {0}" />
</DataTemplate>

<ToolBar>
    <ContentPresenter Content={Binding <PathtoViewModel>} />
</ToolBar>

ومع استخدام الارتباطات لم يكن لديك لتحديث صراحة محتوى التسمية. تم تعيين كل ما عليك القيام به قيمة العقار في نموذج عرض ورفع الحدث PropertyChanged الصحيح الذي يتسبب في التسمية لتحديث محتواه.

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