Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF以动态/编程方式添加图像以控制_C#_Wpf_Xaml_Wpf Controls_Staticresource - Fatal编程技术网

C# 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"

嘿,我是WPF的新手,所以我需要一些帮助

我想做的是动态地将图像添加到主窗口上已经放置的控件中

我的控件代码如下:

<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
}
}
}
到目前为止,我只得到了这么多。不确定如何从代码后面调用该控件并将其添加到 我做了一些搜索,但我能找到的最多的只是将图像添加到按钮或将图像添加到数据库,等等

理想情况下,我只想从代码后面调用图像,而不是在XAML代码中

这是trasContainer代码:

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。太棒了!成功了!谢谢你,克里斯蒂安!令人惊叹的!成功了!谢谢你