【问题标题】:WPF C#: How to add a usercontrol to a thumb control programatically?WPF C#:如何以编程方式将用户控件添加到拇指控件?
【发布时间】:2015-01-22 10:39:56
【问题描述】:

另一天,另一个问题:): 目前在我的 XAML 中,我在包含用户控件的画布上有一个拇指:

<Canvas Name="SweetCanvas">
  <Thumb Name="tmbThumb"  Canvas.Left="245" Canvas.Top="185" DragDelta="Thumb_DragDelta">
     <Thumb.Template>
       <ControlTemplate>
         <my:UserControl1 />
       </ControlTemplate>
      </Thumb.Template>
   </Thumb>
</Canvas>

有效。但我想以编程方式添加这样的拇指,所以我尝试了这个:

UserControl1 newUC= new UserControl1 (); //UserControl i want on the thumb
Thumb tmbDragThumb = new Thumb()
tmbDragThumb.DragDelta += new DragDeltaEventHandler(Thumb_DragDelta); //event for the thumb
//Dont really know what to do here :/
tmbDragThumb.Template = newUC; //Adding usercontrol to something something something?

SweetCanvas.Children.Add(tmbDragThumb); //add the final Thumb to Canvas

我真的不知道如何向这个拇指添加内容,就像我在 XAML 中所做的那样

【问题讨论】:

  • 我猜你必须先创建一个模板,就像在 xaml 中一样
  • 但是这是如何工作的呢? :D

标签: c# wpf xaml user-controls slider


【解决方案1】:

刚刚自己使用 FrameworkElementFactory 找到了解决方案:

Thumb tmbDragThumb = new Thumb();
tmbDragThumb.DragDelta += new DragDeltaEventHandler(Thumb_DragDelta);
ControlTemplate template = new ControlTemplate();
var fec= new FrameworkElementFactory(typeof(UserControl1 ));
template.VisualTree = fec;
tmbDragThumb.Template = template;

SweetCanvas.Children.Add(tmbDragThumb);

这很有帮助: https://code.msdn.microsoft.com/windowsdesktop/WPF-Styles-and-Control-b6732c24

【讨论】:

    猜你喜欢
    • 2011-02-18
    • 1970-01-01
    • 1970-01-01
    • 2015-12-29
    • 1970-01-01
    • 2012-09-10
    • 2016-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多