从XAML结构修改命名图像源

时间:2015-05-27 06:33:29

标签: c# wpf xaml

我开始使用WPF,似乎无法在此方法上找到任何内容。我很可能不知道正确的措辞,所以问这里。

我有一个按钮,我已经格式化了我在XAML中的需求。除了Image之外,我在窗口中正确渲染它。由于每次都会通过代码调用图像(因为按钮会在用户需要时生成),因此图像在XAML中保留为空白。

在Code部分中,我遇到了在创建的XAML按钮模板中调用“imgIco”图像名称的问题; “button.imgIco”似乎没有用。 ;)

提前感谢您,这里是相互交互的代码片段。

XAML

your_data

C#的.cs

<Setter.Value>
      <ControlTemplate TargetType ="{x:Type Button}">
        <Grid>
          <Ellipse Name ="UXbg" Fill ="Transparent" Stroke="White" StrokeThickness="1"/>
          <Ellipse Name ="UXbg2" Width="40" Height="40" Fill="White"/>
          <Image Name="UXid" Width="32" Height="32">
            <Image.Clip>
              <EllipseGeometry Center="16,16" RadiusX="16" RadiusY="16"/>
            </Image.Clip>
          </Image>
          <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
        </Grid>
        <ControlTemplate.Triggers>
          <Trigger Property ="IsMouseOver" Value ="True">
            <Setter TargetName ="UXbg" Property ="Stroke" Value ="Orange"/>
            <Setter TargetName ="UXbg2" Property ="Fill" Value ="Orange"/>
          </Trigger>
          <Trigger Property ="IsPressed" Value ="True">
            <Setter TargetName ="UXbg" Property ="Stroke" Value ="White"/>
            <Setter TargetName ="UXbg2" Property ="Fill" Value ="White"/>
          </Trigger>
        </ControlTemplate.Triggers>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

1 个答案:

答案 0 :(得分:0)

你的问题似乎缺少一些信息,但通常当你想设置一个带有代码的图像时,你可以这样做:

<Image Name="ModifiedImage" Initialized="ModifiedImage_Initialized"/>

代码隐藏:

private void ModifiedImage_Initialized(object sender, EventArgs e)
        {
            BitmapImage img = new BitmapImage();
            img.BeginInit();
            img.CacheOption = BitmapCacheOption.OnLoad;
            img.CreateOptions = BitmapCreateOptions.IgnoreImageCache;

            // TODO: check if the image exists, return a "image not found" image if not found.
            img.UriSource = new Uri(@"/Resources/32start.png", UriKind.Relative);
            img.EndInit();
            ((Image)sender).Source = img;
        }