Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.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
Silverlight 将按钮放在文本块(或者其他东西)中,使其像视频中的按钮一样工作?_Silverlight_Silverlight 3.0_Silverlight 4.0 - Fatal编程技术网

Silverlight 将按钮放在文本块(或者其他东西)中,使其像视频中的按钮一样工作?

Silverlight 将按钮放在文本块(或者其他东西)中,使其像视频中的按钮一样工作?,silverlight,silverlight-3.0,silverlight-4.0,Silverlight,Silverlight 3.0,Silverlight 4.0,Silverlight 4 我正在尝试创建文本块,就像Microsoft LightSwitch(模式窗口选择器)上的文本块一样。因此,我可以将其用作GridView列中的customControl 这是youtube上的链接:你可以看到我在08:54/14.50开始谈论的那个 在商业标签上 基本上,当鼠标移到业务文本块上时,按钮将出现在其右侧的内部。当鼠标移到业务文本块外部时,按钮将消失。如果我点击业务文本框,就会出现一个弹出窗口。里面的按钮也是一样。弹出窗口将显示供我选择的值列表。单击其中

Silverlight 4

我正在尝试创建文本块,就像Microsoft LightSwitch(模式窗口选择器)上的文本块一样。因此,我可以将其用作GridView列中的customControl

这是youtube上的链接:你可以看到我在08:54/14.50开始谈论的那个

在商业标签上

基本上,当鼠标移到业务文本块上时,按钮将出现在其右侧的内部。当鼠标移到业务文本块外部时,按钮将消失。如果我点击业务文本框,就会出现一个弹出窗口。里面的按钮也是一样。弹出窗口将显示供我选择的值列表。单击其中一个值并关闭弹出窗口后,业务文本框将显示弹出窗口中所选值的值

实施:

我不确定它是否应该是一个文本块,其中包含带有一些条件动画的按钮,以使按钮出现在文本块内部。然而,我认为我应该做一个长方形,然后让它变成一个按钮。然后在contentTemplate中放置一个Textblock和按钮。该按钮仅在鼠标移到矩形时出现

我真的不知道当鼠标移到矩形上时,如何使按钮的动画工作,当鼠标离开矩形时,动画消失,因为这将涉及动画和controltemplate。或者我的方法是否正确

任何帮助都将不胜感激


谢谢

如果要更改单个控件的属性,我会说创建一个可重用的行为并将其附加到TextBlock控件

当您想引入一个额外的控件时,请使用一个自定义控件来代替TextBlock(而不是向TextBlock添加按钮)

  • 创建自定义用户控件
  • 在创建的标准LayoutRoot网格中添加文本块和按钮
  • 编辑设置,使按钮最初处于隐藏状态。e、 g.不透明度=0
  • 将TextBlock文本作为依赖项属性公开,以允许对内容进行正常绑定
  • 将按钮单击作为事件公开,以允许外部用户捕获该事件
  • 添加ShowButton和HideButton情节提要以显示和隐藏按钮。通过更改“不透明度”值来执行此操作。如果按钮是完全透明的,则不能单击它
如果您需要关于如何执行这些步骤的具体帮助,请询问。您也可以通过我们的网站与我们联系

*注意:使用Expression Blend进行此类工作比VS 2010容易100倍。太多的程序员只将Blend作为一种设计工具而忽略。这是值得努力学习的

@Tai:正如您通过电子邮件善意地询问的那样,下面是一个完整的用户控件示例,该控件的文本和按钮的事件都具有依赖性属性。您可以将此作为指导。我已将其精简到最低限度:

<UserControl
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions" x:Class="SilverlightApplication1.TextButtonControl"
    mc:Ignorable="d"
    d:DesignHeight="20" d:DesignWidth="200">
    <UserControl.Resources>
        <Storyboard x:Name="ShowButtonStoryboard">
            <DoubleAnimation Duration="0:0:0.5" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="ActionButton" d:IsOptimized="True"/>
        </Storyboard>
        <Storyboard x:Name="HideShowButtonStoryboard">
            <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="ActionButton">
                <SplineDoubleKeyFrame KeyTime="0:0:0.5" Value="0"/>
            </DoubleAnimationUsingKeyFrames>
        </Storyboard>
    </UserControl.Resources>

    <Grid x:Name="LayoutRoot" Background="White">
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition Width="25"/>
        </Grid.ColumnDefinitions>
        <i:Interaction.Triggers>
            <i:EventTrigger EventName="MouseLeave">
                <ei:ControlStoryboardAction Storyboard="{StaticResource HideShowButtonStoryboard}"/>
            </i:EventTrigger>
            <i:EventTrigger EventName="MouseEnter">
                <ei:ControlStoryboardAction Storyboard="{StaticResource ShowButtonStoryboard}"/>
            </i:EventTrigger>
        </i:Interaction.Triggers>
        <TextBlock x:Name="DisplayTextBlock" TextWrapping="Wrap" Text="TextBlock" d:LayoutOverrides="Height"/>

        <Button x:Name="ActionButton" Content="..." Grid.Column="1" Opacity="0"/>

    </Grid>
</UserControl>

以及背后的代码:

using System;
using System.Windows;
using System.Windows.Controls;

namespace SilverlightApplication1
{
    public partial class TextButtonControl : UserControl
    {
        public event EventHandler<RoutedEventArgs> ButtonClicked;

        public string Text
        {
            get { return (string)GetValue(TextProperty); }
            set
            {
                SetValue(TextProperty, value);
                DisplayTextBlock.Text = value;
            }
        }

        public static readonly DependencyProperty TextProperty =
            DependencyProperty.Register("Text",
                                        typeof(string),
                                        typeof(TextButtonControl),
                                        new PropertyMetadata(string.Empty, new PropertyChangedCallback(OnTextChanged)));

        static void OnTextChanged(object sender, DependencyPropertyChangedEventArgs args)
        {
            // If you need to know about text changes...
        }

        public TextButtonControl()
        {
            InitializeComponent();
            this.ActionButton.Click +=new RoutedEventHandler(ActionButton_Click);
        }

        private void ActionButton_Click(object sender, RoutedEventArgs e)
        {
            if (ButtonClicked != null)
            {
                ButtonClicked(this, e);
            }
        }
    }
}
使用系统;
使用System.Windows;
使用System.Windows.Controls;
命名空间SilverlightApplication1
{
公共部分类TextButtonControl:UserControl
{
单击公共事件事件处理程序按钮;
公共字符串文本
{
获取{return(string)GetValue(TextProperty);}
设置
{
设置值(TextProperty,value);
DisplayTextBlock.Text=值;
}
}
公共静态只读DependencyProperty TextProperty=
DependencyProperty.Register(“文本”,
类型(字符串),
类型(文本按钮控制),
新的PropertyMetadata(string.Empty,新的PropertyChangedCallback(OnTextChanged));
静态void OnTextChanged(对象发送方,DependencyPropertyChangedEventArgs参数)
{
//如果您需要了解文本更改。。。
}
公共文本按钮控件()
{
初始化组件();
this.ActionButton.Click+=新路由EventHandler(ActionButton\u Click);
}
私有无效操作按钮\单击(对象发送者,路由目标)
{
如果(按钮点击!=空)
{
按钮点击(此,e);
}
}
}
}

你能从视频中截取一张你想要的控件的截图,并将其添加到你的问题中吗?那个视频链接/时间位置并没有帮你弄清楚你到底想要什么。也许我错过了什么。你太神奇了。非常感谢,这对我来说是一个很好的学习指南