C# WPF以动态/编程方式添加图像以控制
嘿,我是WPF的新手,所以我需要一些帮助 我想做的是动态地将图像添加到主窗口上已经放置的控件中 我的控件代码如下:C# WPF以动态/编程方式添加图像以控制,c#,wpf,xaml,wpf-controls,staticresource,C#,Wpf,Xaml,Wpf Controls,Staticresource,嘿,我是WPF的新手,所以我需要一些帮助 我想做的是动态地将图像添加到主窗口上已经放置的控件中 我的控件代码如下: <Controls:TransitionPresenter x:Name="_transContainer2" RestDuration="0:0:3" IsLooped="True"
<Controls:TransitionPresenter x:Name="_transContainer2"
RestDuration="0:0:3"
IsLooped="True"
Width="200" Height="200"
Transition="{StaticResource SlideTransition}" Margin="16,6,544,787"
>
<Image x:Name="_image12"
Source="Images/img1.png"
Stretch="Fill" Width="200" Height="200" HorizontalAlignment="Left" />
<Image x:Name="_image22"
Source="Images/img2.png"
Stretch="Fill" Width="200" Height="200" />
<Image x:Name="_image32"
Source="Images/img3.png"
Stretch="Fill" Width="200" Height="200" HorizontalAlignment="Right" />
</Controls:TransitionPresenter>
<Button Content="btnAddImage" HorizontalAlignment="Left" Height="169" Margin="73,525,0,0" VerticalAlignment="Top" Width="180" Click="Button_Click"/>
这是主窗口背后的代码:
namespace flipwindow
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
private string _backItem = "_image1";
private string _frontItem = "_image2";
public MainWindow()
{
InitializeComponent();
//Loaded += TransitionTester_Loaded;
SwapFrontAndBack();
//PlayCube();
}
private void TransitionTester_Loaded(object sender, RoutedEventArgs e)
{
_transContainer.TransitionCompleted += _transContainer_TransitionCompleted;
}
private void _transContainer_TransitionCompleted(object sender, EventArgs e)
{
SwapFrontAndBack();
}
private void SwapFrontAndBack()
{
string temp = _frontItem;
_frontItem = _backItem;
_backItem = temp;
}
private void PlayCube()
{
CubeTransition transition = Resources["CubeTransition"] as CubeTransition;
//transition.Rotation = Direction.LeftToRight;
//transition.Rotation = Direction.RightToLeft;
//transition.Rotation = Direction.TopToBottom;
transition.Rotation = Direction.BottomToTop;
_transContainer.Transition = transition;
_transContainer.ApplyTransition(_frontItem, _backItem);
}
private void Button_Click(object sender, RoutedEventArgs e)
{
_transContainer2.image
}
}
}
名称空间窗口
{
///
///MainWindow.xaml的交互逻辑
///
公共部分类主窗口:窗口
{
私有字符串_backItem=“_image1”;
私有字符串_frontItem=“_image2”;
公共主窗口()
{
初始化组件();
//已加载+=已加载的TransitionTester\u;
SwapFrontAndBack();
//PlayCube();
}
已加载私有void TransitionTester_(对象发送方,路由目标)
{
_transContainer.TransitionCompleted+=\u transContainer\u TransitionCompleted;
}
私有void\u transContainer\u TransitionCompleted(对象发送方,事件参数e)
{
SwapFrontAndBack();
}
专用void SwapFrontAndBack()
{
字符串温度=_frontItem;
_前项=_后项;
_背景项=温度;
}
私有void PlayCube()
{
CubeTransition transition=资源[“CubeTransition”]作为CubeTransition;
//transition.Rotation=Direction.LeftToRight;
//转换。旋转=方向。从右到左;
//transition.Rotation=Direction.toptobttom;
transition.Rotation=Direction.BottomToTop;
_transContainer.Transition=转换;
_transContainer.ApplyTransition(_frontItem,_backItem);
}
私有无效按钮\u单击(对象发送者,路由目标e)
{
_transContainer2.image
}
}
}
到目前为止,我只得到了这么多。不确定如何从代码后面调用该控件并将其添加到using FluidKit.Controls;
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
namespace flipwindow
{
/// <summary>
/// Interaction logic for TransitionTester.xaml
/// </summary>
public partial class TransitionTester : UserControl
{
public TransitionTester()
{
InitializeComponent();
Loaded += TransitionTester_Loaded;
}
private string _backItem = "_image1";
private string _frontItem = "_image2";
private void TransitionTester_Loaded(object sender, RoutedEventArgs e)
{
_transContainer.TransitionCompleted += _transContainer_TransitionCompleted;
}
private void _transContainer_TransitionCompleted(object sender, EventArgs e)
{
SwapFrontAndBack();
}
private void SwitchImage(object sender, MouseButtonEventArgs args)
{
if (Keyboard.Modifiers == ModifierKeys.Control)
{
_transContainer.ApplyTransition("_image2", "_image1");
}
}
private void PlayCube()
{
CubeTransition transition = Resources["CubeTransition"] as CubeTransition;
transition.Rotation = Direction.LeftToRight;
//transition.Rotation = Direction.RightToLeft;
//transition.Rotation = Direction.TopToBottom;
//transition.Rotation = Direction.BottomToTop;
_transContainer.Transition = transition;
_transContainer.ApplyTransition(_frontItem, _backItem);
}
private void PlayTransition(object sender, RoutedEventArgs args)
{
Button b = sender as Button;
switch (b.Name)
{
case "_playCube":
PlayCube();
break;
case "_playSlide":
PlaySlide();
break;
case "_playFlip":
PlayFlip();
break;
}
}
private void PlayFlip()
{
FlipTransition transition = Resources["FlipTransition"] as FlipTransition;
transition.Rotation = Direction.LeftToRight;
//transition.Rotation = Direction.RightToLeft;
_transContainer.Transition = transition;
_transContainer.ApplyTransition(_frontItem, _backItem);
}
private void PlaySlide()
{
SlideTransition transition = Resources["SlideTransition"] as SlideTransition;
transition.Direction = Direction.LeftToRight;
//transition.Direction = Direction.RightToLeft;
_transContainer.Transition = transition;
_transContainer.ApplyTransition(_frontItem, _backItem);
}
private void SwapFrontAndBack()
{
string temp = _frontItem;
_frontItem = _backItem;
_backItem = temp;
}
}
}
使用FluidKit.控件;
使用制度;
使用System.Windows;
使用System.Windows.Controls;
使用System.Windows.Input;
命名空间翻转窗口
{
///
///TransitionTester.xaml的交互逻辑
///
公共部分类TransitionTester:UserControl
{
公共TransitionTester()
{
初始化组件();
已加载+=已加载的TransitionTester\u;
}
私有字符串_backItem=“_image1”;
私有字符串_frontItem=“_image2”;
已加载私有void TransitionTester_(对象发送方,路由目标)
{
_transContainer.TransitionCompleted+=\u transContainer\u TransitionCompleted;
}
私有void\u transContainer\u TransitionCompleted(对象发送方,事件参数e)
{
SwapFrontAndBack();
}
私有void SwitchImage(对象发送器,MouseButtonEventArgs参数)
{
if(Keyboard.Modifiers==ModifierKeys.Control)
{
_transContainer.ApplyTransition(“_image2”,“_image1”);
}
}
私有void PlayCube()
{
CubeTransition transition=资源[“CubeTransition”]作为CubeTransition;
transition.Rotation=Direction.LeftToRight;
//转换。旋转=方向。从右到左;
//transition.Rotation=Direction.toptobttom;
//transition.Rotation=Direction.BottomToTop;
_transContainer.Transition=转换;
_transContainer.ApplyTransition(_frontItem,_backItem);
}
私有void播放转换(对象发送方、RoutedEventArgs参数)
{
按钮b=发送器为按钮;
开关(b.Name)
{
案例“_playCube”:
PlayCube();
打破
案例“\u播放幻灯片”:
播放幻灯片();
打破
案例“_playlip”:
PlayFlip();
打破
}
}
私有void playlip()
{
FlipTransition transition=资源[“FlipTransition”]作为FlipTransition;
transition.Rotation=Direction.LeftToRight;
//转换。旋转=方向。从右到左;
_transContainer.Transition=转换;
_transContainer.ApplyTransition(_frontItem,_backItem);
}
私人幻灯片()
{
SlideTransition transition=资源[“SlideTransition”]作为SlideTransition;
transition.Direction=Direction.LeftToRight;
//transition.Direction=Direction.right到left;
_transContainer.Transition=转换;
_transContainer.ApplyTransition(_frontItem,_backItem);
}
专用void SwapFrontAndBack()
{
字符串温度=_frontItem;
_前项=_后项;
_背景项=温度;
}
}
}
FluidKit TransitionPresenter似乎是一个ItemsControl。因此,您可以通过向其items集合添加控件向其添加新项。当您要添加图像控件时,我们将创建一个新的图像控件并添加它:
private void Button_Click(object sender, RoutedEventArgs e)
{
_transContainer2.Items.Add(new Image
{
Source = new BitmapImage(new Uri("pathToYourImage")),
Stretch = Stretch.Fill,
Width = 200,
Height = 200
});
}
FluidKit TransitionPresenter似乎是一个ItemsControl。因此,您可以通过向其items集合添加控件向其添加新项。当您要添加图像控件时,我们将创建一个新的图像控件并添加它:
private void Button_Click(object sender, RoutedEventArgs e)
{
_transContainer2.Items.Add(new Image
{
Source = new BitmapImage(new Uri("pathToYourImage")),
Stretch = Stretch.Fill,
Width = 200,
Height = 200
});
}
@克莱门斯很遗憾它没有这个代码。@克莱门斯用跨容器代码更新了我的OP。@克莱门斯很遗憾它没有这个代码。@克莱门斯用跨容器代码更新了我的OP。太棒了!成功了!谢谢你,克里斯蒂安!令人惊叹的!成功了!谢谢你