আপনি ডাব্লুপিএফ-তে বোতামের সীমানাকে কীভাবে সরিয়ে ফেলবেন?


129

আমি একটি বোতাম তৈরি করার চেষ্টা করছি যাতে এটিতে একটি চিত্র রয়েছে এবং কোনও সীমানা নেই - ঠিক তেমনভাবে আপনি ফায়ারফক্সের সরঞ্জামদণ্ডের বোতামগুলির উপরে ওঠার আগে এবং পুরো বোতামটি দেখার জন্য।

আমি সেটিং চেষ্টা করেছি BorderBrushকরতে Transparent, BorderThicknessকরতে 0, এবং এছাড়াও চেষ্টা BorderBrush="{x:Null}", কিন্তু আপনি এখনও বোতাম রূপরেখা দেখতে পারেন।



1
ডাব্লুপিএফ-এ একটি সীমান্তহীন বোতাম? !!! আপনি কি মনে করেন এটি একটি স্বজ্ঞাত UI কাঠামো ??!
জোশ নোয়ে

উত্তর:


258

এটা চেষ্টা কর

<Button BorderThickness="0"  
    Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}" >...

1
ফ্যান্টাস্টিক! আমি খুঁজে পাওয়া প্রতিটি অন্যান্য সমাধান অত্যন্ত সংশ্লেষিত এবং বোতামের সমস্ত স্টাইলিংকে ওভাররাইড করার সাথে জড়িত।
জোনাথন

10
দুর্ভাগ্যবশত, এটা সেটিং প্রভাব নিষ্ক্রিয় HorizontalContentAlignmentকরতে Stretch
কনরাড মোরাউস্কি

3
@ সিউর প্রশ্নগুলি নির্দিষ্ট করে ডাব্লুপিএফকে সিলভারলাইট নয়
সাইমন

10
এটি আমার বোতামটি টগল বোতামে রূপান্তর করছে। আমি যখন বোতামটি ক্লিক করি তখন আমি অন্য বোতামটি ক্লিক না করা অবধি নির্বাচিত থাকে। কীভাবে আমি এ জাতীয় অভিনয় থেকে বাধা দেব?
বার্নটোস্ট 11

2
যদি আমি পারতাম তবে এই দু'বার উপস্থাপন করব। আমি চাই এমন চেহারা পেতে আমাকে প্রচুর কোড সংরক্ষণ করেছেন।
অ্যাভেনমোর

52

আপনাকে বোতামের টেম্পলেটটি পরিবর্তন করতে হতে পারে, এটি আপনাকে কোনও ফ্রেম ছাড়াই একটি বোতাম দেবে যা এখন পর্যন্ত আর কোনও প্রেস বা অক্ষম প্রভাব ছাড়াই:

    <Style x:Key="TransparentStyle" TargetType="{x:Type Button}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Button">
                    <Border Background="Transparent">
                        <ContentPresenter/>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

এবং বোতাম:

<Button Style="{StaticResource TransparentStyle}"/>

আমি জানি না কেন অন্যান্য সমাধানগুলি অন্য ব্যক্তির সাথে কাজ করে বলে মনে হয়। এই সমাধানটিই কেবলমাত্র কাজ করতে পারে কারণ কনটেন্টপ্রেসেন্টার বর্ডার লাইনটিও সরানো হয়েছে! ভাল কাজ!
নাসেনবায়ার

1
আমি আরও কয়েকটি সমাধানের চেষ্টা করেছি, এটি কেবলমাত্র একটি কাজ। বিটিডব্লিউ, নবাবিদের জন্য <স্টাইল> </style> কোডটি আপনার উইন্ডোজের <শিরোনামের << উইন্ডো <র রিসোর্স> <স্টাইল> এর মতো শিরোনামে থাকা উচিত
ফেলিক্স

1
এছাড়াও, উত্তরে একটি টাইপো রয়েছে: <Button Style="{StaticResource TransparentButton}"/>হওয়া উচিত<Button Style="{StaticResource TransparentStyle}"/>
ফেলিক্স

আমার জন্য কাজ করেছেন, দুর্দান্ত সমাধান!
bbqchickenrobot

আমার জন্য কাজ করেছেন, দুর্দান্ত সমাধান!
কনটাঙ্গো

23

আপনার যা করতে হবে তা হ'ল:

<Button Name="MyFlatImageButton"
        Background="Transparent"
        BorderBrush="Transparent"
        BorderThickness="0" 
        Padding="-4">
   <Image Source="MyImage.png"/>
</Button>

এই জন্য আপনি খুঁজছেন হয়েছে কি না আশা করি।

সম্পাদনা: দুঃখিত, চিত্রটি ওভারের সময় আপনি যদি বোতাম-সীমান্ত দেখতে চান তবে আপনার প্যাডিং = "- 4" এড়িয়ে যেতে হবে তা উল্লেখ করতে ভুলে গেছেন ।


1
এটি কাজ করে, এবং এটি বেশ কয়েকটি ক্ষেত্রে খুব সুন্দর ধারণা
কৌতূহল

আপনি একটি বোতামের অভ্যন্তরে কোনও চিত্র প্রসারিত করতে চাইলে এটি পুরোপুরি কাজ করে। প্যাডিং অপসারণ চিত্রকে পুরো বোতামের মাত্রা দখল করতে দেয়।
ভিস্ক

23

আমি জানি না কেন অন্যরা কেন এটি নির্দেশ করে নি যে এই প্রশ্নটি গ্রহণযোগ্য উত্তর সহ এটির সাথে নকল হয়েছে ।

আমি এখানে সমাধানটির উদ্ধৃতি দিচ্ছি: আপনাকে এরগুলির ওভাররাইড করতে ControlTemplateহবে Button:

<Button Content="save" Name="btnSaveEditedText" 
                Background="Transparent" 
                Foreground="White" 
                FontFamily="Tw Cen MT Condensed" 
                FontSize="30" 
                Margin="-280,0,0,10"
                Width="60"
                BorderBrush="Transparent"
                BorderThickness="0">
    <Button.Template>
        <ControlTemplate TargetType="Button">
             <ContentPresenter Content="{TemplateBinding Content}"/>
        </ControlTemplate>
    </Button.Template>  
</Button>

5
আপনি যদি কোনও বিষয়বস্তু বোতামের ভিতরে না রাখেন তবে এটি ক্লিকগুলিতে সাড়া দেয় না। স্বচ্ছ পটভূমি সহ একটি সীমানায় সেই কনটেন্টপ্রেসেন্টার মোড়ানো করে আপনি এটি ঠিক করতে পারেন। এইভাবে আপনি কোনও চিত্রের জন্য কোনও আকারের ফাঁকা / স্বচ্ছ বাটন তৈরি করতে পারেন।
বিজে 0

3

আপনি বোতামের পরিবর্তে হাইপারলিঙ্ক ব্যবহার করতে পারেন:

        <TextBlock>
            <Hyperlink TextDecorations="{x:Null}">
            <Image Width="16"
                   Height="16"
                   Margin="3"
                   Source="/YourProjectName;component/Images/close-small.png" />
            </Hyperlink>
        </TextBlock>

2

আপনি ইতিমধ্যে জেনে থাকতে পারেন যে আপনার বোতামটি একটি সরঞ্জামদণ্ডের ভিতরে রাখলে এটি আপনাকে এই আচরণ দেয় তবে আপনি যদি এমন কিছু চান যা কোনও প্রকার অনুমানযোগ্যতার সাথে সমস্ত বর্তমান থিম জুড়ে কাজ করবে, আপনাকে একটি নতুন কন্ট্রোলটেম্পলেট তৈরি করতে হবে।

যখন বাটনটির ফোকাস থাকে তখন প্রশান্তের সমাধান কোনও সরঞ্জামদণ্ডে বাটন না করে একটি বোতাম নিয়ে কাজ করে না। এটি এক্সপিতে ডিফল্ট থিমটি দিয়ে 100% কাজ করে না - আপনার ধারক ব্যাকগ্রাউন্ডটি সাদা হয়ে গেলে আপনি এখনও ম্লান ধূসর সীমানা দেখতে পাবেন।


1

প্রোগ্রামগতভাবে, আপনি এটি করতে পারেন:

btn.BorderBrush = new SolidColorBrush(Colors.Transparent);

1
আমি মনে করি না যে এটি কার্যকর হতে পারে, যেহেতু তিনি এক্সএএমএল পক্ষের কোনও সমাধানের সন্ধান করছেন
মোহাম্মদ কামেল বোজেকেরিয়া

-1

কেন আপনি উভয় Background & BorderBrushএকই সেট নাbrush

 <Style TargetType="{x:Type Button}" >
        <Setter Property="Background" Value="{StaticResource marginBackGround}"></Setter>
        <Setter Property="BorderBrush" Value="{StaticResource marginBackGround}"></Setter>            
 </Style>

<LinearGradientBrush  x:Key="marginBackGround" EndPoint=".5,1" StartPoint="0.5,0">
    <GradientStop Color="#EE82EE" Offset="0"/>
    <GradientStop Color="#7B30B6" Offset="0.5"/>
    <GradientStop Color="#510088" Offset="0.5"/>
    <GradientStop Color="#76209B" Offset="0.9"/>
    <GradientStop Color="#C750B9" Offset="1"/>
</LinearGradientBrush>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.