如何从WPF中的代码隐藏中删除控制属性

时间:2017-11-10 10:32:21

标签: c# wpf

我想从代码Behind中删除属性背景。 这是我的Xaml代码 -

def jobwise_plotter(prog_no):
    df = single_df[single_df['PRG_NO']==prog_no]

    #fig1 = plt.figure()

    #jobs_list = list(df['Job_no'].unique())
    #tools_list = list(df['TOOL_No.'].unique())

    for job in list(df['Job_no'].unique()):

        df_temp = df[df['Job_no']==job]

        time_axis_max = 0

        for tool in list(df_temp['TOOL_No.'].unique()):

            plt.plot(df_temp['Time'][df_temp['TOOL_No.']==tool], 
                     df_temp['Spindle'][df_temp['TOOL_No.']==tool], label=str(tool))



            if int(df_temp['Time'][df_temp['TOOL_No.']==tool].max()) > time_axis_max:
                time_axis_max = int(df_temp['Time'][df_temp['TOOL_No.']==tool].max())




        plt.title("Prog No. : "+ str(prog_no) + ", Job no : "+ str(job) + ", All Tools")

        plt.xlabel("Time (in ms.)")
        plt.ylabel("Spindle Load")

        name = "prog_"+str(prog_no)+"_"+"JOB_"+str(job)+"_All_tools"
        plt.xticks(np.arange(0, time_axis_max+10000, 5000))
        plt.grid(linewidth = 2, linestyle = '-', color='#eff3f9')


        lgd = plt.legend(loc='upper center', bbox_to_anchor=(0.5, 0.98), ncol=10)

        plt.tight_layout()
        fig1 = plt.gcf()

        fig1.set_size_inches(100, 10)
        #fig1 = plt.gcf()
        print(name)
        fig1.savefig(name, dpi=500, bbox_extra_artists=(lgd,))

        plt.show()

和Xml.cs

<Button Name="btnBack" Width="50" Height="50"></Button>

但是在一些操作之后我想用值删除这个属性 所以我的按钮应该是原来的颜色和&#34;红色&#34;应该删除。

任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:5)

通过调用DependencyObject.ClearValue

将属性重置为默认值
btnBack.ClearValue(Control.BackgroundProperty);

这会清除所谓的本地值(例如直接或通过Binding设置的任何值),但保留Style设置的任何潜在值。

答案 1 :(得分:1)

您还可以将依赖项属性的值设置为UnsetValue

btnBack.SetValue(TextBlock.BackgroundProperty, DependencyProperty.UnsetValue);

它不如@Clemens answer那么好,但它似乎有用,可以在?:的一个班轮中使用,以设置或清除值。

答案 2 :(得分:-1)

    // first store its original color
    Brush Originalcolor = btnBack.Background;

    // on some condition
    btnBack.Background = Brushes.Red;

    // afte some other condition
    btnBack.Background = Originalcolor;